如何在 Rational Rhapsody 8.0.1 中建模不可复制
How to model noncopyable in Rational Rhapsody 8.0.1
我想在我的 Rhapsody 模型中制作一个 class 不可复制,但是
- 没有可用的 boost 库(我只是从中导出)
- 我也不能使用 C++11 方法来禁用默认生成的复制构造函数和复制赋值操作(因为我需要操作函数签名,这 AFAIK 是不可能直接实现的)
=> 所以我正在用古老的方法来做这件事。
我需要从 Rhapsody 得到什么:
在这种情况下,我只想为复制构造函数和复制赋值操作生成声明 - 我不需要实现。
这可能吗?
我考虑的事情:
- 我还没有找到任何有用的东西属性。
- 仅将成员函数的规范映射到文件对象不会阻止 Rhapsody 将空函数体生成到隐式创建的文件对象(我不需要也不想要)。
写一个私有拷贝函数和运算符:
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);
}
您可以查看 boost version of the non-copyable interface 以获得更完整的示例。
我建议采用刻板印象方法:
- 创建一个
NonCopyable
基础 class,例如,@Dennis 所描述的。
创建构造型,例如可以命名为<<non-copyable>>
.
a) 将构造型 属性 CPP_CG::Class::AdditionalBaseClasses
设置为 NonCopyable
(上面创建的基础 class 的名称)。
b) 使原型适用于 classes.
最后,将 <<non-copyable>>
构造型添加到所有不可复制的 classes。
我想在我的 Rhapsody 模型中制作一个 class 不可复制,但是
- 没有可用的 boost 库(我只是从中导出)
- 我也不能使用 C++11 方法来禁用默认生成的复制构造函数和复制赋值操作(因为我需要操作函数签名,这 AFAIK 是不可能直接实现的)
=> 所以我正在用古老的方法来做这件事。
我需要从 Rhapsody 得到什么:
在这种情况下,我只想为复制构造函数和复制赋值操作生成声明 - 我不需要实现。 这可能吗?
我考虑的事情:
- 我还没有找到任何有用的东西属性。
- 仅将成员函数的规范映射到文件对象不会阻止 Rhapsody 将空函数体生成到隐式创建的文件对象(我不需要也不想要)。
写一个私有拷贝函数和运算符:
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);
}
您可以查看 boost version of the non-copyable interface 以获得更完整的示例。
我建议采用刻板印象方法:
- 创建一个
NonCopyable
基础 class,例如,@Dennis 所描述的。 创建构造型,例如可以命名为
<<non-copyable>>
.a) 将构造型 属性
CPP_CG::Class::AdditionalBaseClasses
设置为NonCopyable
(上面创建的基础 class 的名称)。b) 使原型适用于 classes.
最后,将
<<non-copyable>>
构造型添加到所有不可复制的 classes。