如何保护班级成员?

时间:2013-01-15 20:47:19

标签: c++ assignment-operator

我有一个类 myclass ,它封装了一个fstream-pointer(不仅仅是fstream,因为fstream声明了一个私有赋值运算符,所以我无法正确复制 myclass ,但那不是问题!)。

另外,我的类有两个函数, open() close(),它们分别打开和关闭fstream对象。 fstream打开的事实记录在myclass中的私有变量 bool isOpen 中。

因此,如果在 isOpen == true 的情况下,只有 isOpen == true 才能执行 myclass 实例中的任何其他功能。

我想,当我复制 myclass 的实例时,fstream-pointer在每种情况下都指向null和/或 isOpen == false 。这样,我不允许不同的实例使用同一个文件。在某种程度上,我正在保护另一个实例的价值。

那么,如何定义* myclass的赋值运算符?或许,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

您必须为您的班级实现复制构造函数和赋值运算符。

另外(如果你仍然使用fstream对象的指针成员,尽管“Konrad Rudolf”建议不要这样做)不要忘记你的析构函数中的delete指针有{{1的析构函数调用的对象关闭打开的文件。您无法确定每个fstream都有open()对。