我已經定義了一個Player類來完成一些操作,所以我很方便重載一些基本的操作符。具體來說,我想用<來比較Player對象。因此,我在課堂上有以下幾種:爲cout重載'<'Operator Breaks <<?
bool operator<(const Player& rhs) const {return (*this < rhs);}
不幸的是,這導致了問題。後來,當我嘗試在我的主函數中輸出包含特定元素的矢量時,編譯器讓我知道操作數不匹配,並且它期望std :: ostream < < Player。下面是導致此問題的行:
vector<Player> playerVec(6);
for (int i = 0; i < 6; i++) {
cout << playerVec[i];
}
注意,我真的不希望輸出的任何播放器直接反對流,所以我不認爲我需要重載< <。
我對發生了什麼有一些想法,因爲編譯器需要我的具體定義<,然後不打擾尋找更一般的情況。我的問題是,我現在是否需要重載運算符以返回其通用功能,還是有更簡單的解決方案?
感謝您提供的任何幫助!
請給我們的代碼。 – 0x499602D2
這不是無限遞歸嗎? – juanchopanza
如果你想輸出你的對象,你應該重載<<運算符,它不依賴於運算符<過載 –