我有一個類,這是有點像這樣:C++流引用作爲類成員
#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;
}
我想用指針來代替,但我更喜歡,因爲我喜歡的事實,他們被擔保人您使用引用他們不會有無效的價值,在我看來這是一個更優雅的方法。
但問題是,我將向下轉換'的std ::動態ifstream'檢查一些在內部的其他方法類的具體方法我的班級,只是緩衝區共享不會讓我做那些comprobations(我認爲)。 – skatrak