我已经定义了一个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
如果你想输出你的对象,你应该重载<<运算符,它不依赖于运算符<过载 –