我有一个类 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的赋值运算符?或许,还有其他方法吗?
答案 0 :(得分:1)
您必须为您的班级实现复制构造函数和赋值运算符。
另外(如果你仍然使用fstream对象的指针成员,尽管“Konrad Rudolf”建议不要这样做)不要忘记你的析构函数中的delete
指针有{{1的析构函数调用的对象关闭打开的文件。您无法确定每个fstream
都有open()
对。