0

我想在我的 Rhapsody 模型中创建一个不可复制的课程,但是

  • 没有可用的 boost 库(我只是从中派生)
  • 我也不能使用 C++11 方式来禁用默认生成的复制 ctor 和复制分配操作(因为我需要操作函数签名,而 AFAIK 无法直接实现)

=> 所以我正在以古老的方式来做这件事。

我需要的狂想曲:

在这种情况下,我只想为 copy ctor 和 copy assignment op 生成一个声明——我不需要实现。这甚至可能吗?

我考虑的事情:

  • 我还没有找到任何有用的属性。
  • 仅将成员函数的规范映射到文件对象不会阻止 Rhapsody 将空函数体生成到隐式创建的文件对象(我不需要也不需要)。
4

2 回答 2

2

我会建议一种刻板印象的方法:

  1. 创建一个NonCopyable基类,例如,@Dennis 所描述的。
  2. 创建一个原型,例如,您可以将其命名为<<non-copyable>>.

    a) 将构造型属性设置CPP_CG::Class::AdditionalBaseClassesNonCopyable(上面创建的基类的名称)。

    b) 使构造型适用于类。

  3. 最后,将<<non-copyable>>构造型添加到所有不可复制的类中。

于 2016-11-18T13:01:45.030 回答
0

写一个私有拷贝ctor和opertor:

class NonCopy {
    // These private versions of the copy constructor 
    // and operator will signal to the compiler to 
    // prevent automatic generation.
    NonCopy(const NonCopy& other);
    const NonCopy& operator=(const NonCopy& other);
public:
    // Your public ctors
    NonCopy(int a);
}

您可以查看不可复制接口的增强版本以获得更完整的示例。

于 2016-11-18T09:49:02.817 回答