0

我有一个类myclass封装了一个 fstream 指针(不仅仅是 fstream ,因为 fstream 声明了一个私有赋值运算符,所以我无法正确复制myclass的实例,但这不是问题!)。

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

因此,如果只有在isOpen == true时才能执行myclass实例中实现的任何其他函数。

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

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

4

1 回答 1

1

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

此外(如果您仍然使用指向 fstream 对象的指针成员,尽管“Konrad Rudolf”建议不要这样做)不要忘记delete在您的析构函数中使用指针来fstream调用对象的析构函数以关闭打开的文件。你不能确定每个open()人都会有一close()对。

于 2013-01-15T20:54:55.443 回答