2
我有MyClass.h
一類定義如下領域:使用CIN >>和cout <<來填充類C++
#ifndef MyClass_h
#define MyClass_h
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
class MyClass {
public:
string input
void ReadFrom(istream &is);
void WriteTo(ostream &os) const;
};
#endif /* MyClass_h */
MyClass.cpp
看起來是這樣的:
#include <stdio.h>
#include <string>
#include <iostream>
#include "MyClass.h"
using namespace std;
void MyClass::ReadFrom(istream &is) {
// put data into member 'input'
}
void MyClass::WriteTo(ostream &os) const {
// output data in member 'input'
}
istream& operator >>(istream &is, MyClass &cls) {
cls.ReadFrom(is);
return is;
}
ostream& operator <<(ostream &os, const MyClass &cls) {
cls.WriteTo(os);
return os;
}
main.cpp
樣子這個:
#include <stdio.h>
#include <string>
#include <iostream>
#include "MyClass.h"
using namespace std;
int main(int argc, const char * argv[]) {
MyClass c;
std::cout << "Enter some input" << endl;
std::cin >> c;
return 0;
}
我想完成的是結束騎>>
和<<
運營商,以便std::cin
可以簡單地讀取數據到班級成員,然後std::cout
可以吐出所有這些成員的數據。我不想使用friend
函數。
現在,我得到一個錯誤繞std::cin >> c;
行說:
無效操作數的二進制表示( 'istream的'(又名 'basic_istream <字符>')和 'MyClass的')
恕我直言,不要試圖過度聰明地過載,這通常是個好主意。也許你真正想要的是一個構造函數,它接受你從用戶那裏讀取的數據,一旦你知道你有需要構造這個對象的數據,就可以顯式地調用這些數據。 –