gpt4 book ai didi

c++ - 在 C++ 中,对具有唯一 ID 的对象进行复制/move/分配的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 07:03:24 29 4
gpt4 key购买 nike

/* Example.h file */
class Example {

public:
Example(const std::string& unique_id_, int attribute1_, int attribute2_,):
unique_id(unique_id_), attribute1(attribute1_), attribute2(attribute2_){};

void set_attribute1(int attribute1_){ attribute1 = attribute1_; }
void set_attribute2(int attribute2_){ attribute2 = attribute2_; }

/* Deleting copy/move/assignment operators to make each instance unique */
Exercise_Data(const Exercise_Data&) = delete;
Exercise_Data(Exercise_Data&&) = delete;
Exercise_Data& operator= (Exercise_Data&) = delete;
Exercise_Data& operator= (Exercise_Data&&) = delete;

private:
const std::string unique_id;
int attribute1;
int attribute2;
}
目前,这是我的代码。在调用代码的多个位置,我希望能够编辑除 unique_id 之外的此类的所有属性。如果我添加另一个属性,则必须编辑调用代码(在多个位置)才能设置该新属性。
  • 有没有一种好方法可以允许编辑除唯一 ID 之外的所有属性?
  • 是否可以重载赋值并 move 运算符来执行此操作并仍然删除复制构造函数?
  • 任何人都有一个具有唯一ID的类的好例子吗?
  • 最佳答案

    Is there a good way to allow for all attributes with the exception of the unique id to be edited?


    只需确保 id 是私有(private)的,并且您永远不会返回对它的非常量指针/引用。确保成员函数不修改 id 应该是微不足道的。

    Is it ok to overload the assignment and move operators to do this and still delete the copy constructor?


    类可以 move 但不可复制是可以的。此类类型称为仅 move 。
    如果您想保留成员 const,您将无法实现 move 操作。我建议反对 const 成员。

    Anyone have a good example of a class with unique ids?

    std::unique_ptr本质上是此类的一个示例。 “id”代表一些由析构函数清理的唯一资源。

    关于c++ - 在 C++ 中,对具有唯一 ID 的对象进行复制/move/分配的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64639140/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com