让我们假设我有一个班级
#include <iostream>
using namespace std;
class Test{
public:
friend istream& operator >> (istream& input, Test& test){
input >> test.dummy;
return input;
};
friend ostream& operator << (ostream& output, Test& test){
output << test.dummy << endl;
return output;
};
private:
const int dummy;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为虚拟是恒定的.有没有办法从文件加载并重新创建一个参数是常量的对象?
使用const_cast.通常,您将它用于外部看起来像是常量的对象,但在内部它们确实需要不时地更新状态.至少可以说,使用它从流中读取有点令人困惑.
friend istream& operator >> (istream& input, Test& test){
input >> const_cast<int&>(test.dummy);
return input;
};
Run Code Online (Sandbox Code Playgroud)
沟渠流操作员,使用工厂功能.
static Test fromStream(istream& input) {
int dummy;
input >> dummy;
return Test(dummy);
}
Run Code Online (Sandbox Code Playgroud)
沟渠.相反,如果需要,将整个对象作为const传递.