【发布时间】:2014-02-14 16:14:53
【问题描述】:
我有一门课是这样的:
#include <iostream>
class A {
public:
A (std::istream& is): _is(is) {}
void setInputSource (std::istream& is) {
_is = is;
}
A& operator>> (int& x) {
_is >> x;
return *this;
}
private:
std::istream& _is;
};
我希望_is 成员仅作为参考。我的意思是,它必须“指向”外部std::istream,我不希望setInputSource() 方法复制作为参数传递的流。问题是程序无法编译,因为我提到的那个方法试图访问 std::basic_istream<char> 类的 operator=。
我的目标是让类在这样的程序中按预期运行:
int main() {
int a, b;
std::ifstream ifs("myfile.txt");
A myA(std::cin);
myA >> a;
myA.setInputSource(ifs);
myA >> b;
return 0;
}
我想改用指针,但我更喜欢使用引用,因为我喜欢这样一个事实,即它们向您保证它们不会有无效值,而且在我看来这是一种更优雅的方法。
【问题讨论】: