我有一個類MYLIST,它覆蓋<<
運營商能夠將其自身登錄到控制檯工作:重載運算符<<控制檯輸出不會爲成員變量
class MyList {
public:
vector<int> *numbers;
};
ostream& operator<<(ostream& os, MyList& l);
實現:
ostream& operator<<(ostream& os, MyList& l) {
for (int i = 0; i < l.numbers->size(); i++) {
os << l.numbers->at(i);
}
return os;
}
在另一個類中,我有一個類型爲MyList的成員變量,我無法將其打印到控制檯。有趣的是本地MYLIST變量工作正常:
class A {
public:
MyList list;
void someMethod() const;
};
實現:
void A::someMethod() const {
MyList local;
// Set up local list.
cout << "Local:" << local; // OK!
cout << "Member:" << list; // ERROR!
}
這是錯誤消息:
Invalid operands to binary expression ('basic_ostream<char,
std::__1::char_traits<char>>' and 'const MyList')
Xcode的自動修復建議參考list
:
cout << "Member:" << &list;
這將編譯,但(顯然)它打印list
的地址,而不是我的內容。我不明白這兩個變量與<<
運營商有什麼不同。有人可以解釋嗎?
由於缺少** **分號類A的定義後,這是不可能的編譯器會走這麼遠,你要求,然後發出一些錯誤診斷。這真的是你的真實代碼嗎?如果不是,你認爲我們可以推斷出你真正的代碼是什麼? –