重载'<'运算符中断<<为cout?

Rom*_*der -2 c++ class operator-overloading

我已经定义了一个Player类来进行一些操作,所以我可以方便地重载一些基本操作符.具体来说,我想使用<用于Player对象之间的比较.因此,我在课堂上有以下内容:

bool operator<(const Player& rhs) const {return (*this < rhs );} 
Run Code Online (Sandbox Code Playgroud)

不幸的是,这导致了问题.后来,当我尝试在main函数中输出包含特定元素的向量时,编译器让我知道<< operand没有匹配,并且它需要std :: ostream << Player.以下是导致问题的一行:

vector<Player> playerVec(6);

for (int i = 0; i < 6; i++) {

cout << playerVec[i];

}
Run Code Online (Sandbox Code Playgroud)

请注意,我实际上并不想直接输出任何Player对象流,所以我认为我不需要重载<<.

我对发生的事情有一些了解,因为编译器采用了我的特定定义<然后不打算寻找更一般的情况.我的问题是,我现在需要重载<<运算符以返回其一般功能,还是有更简单的解决方案?

感谢您提供的任何帮助!

jua*_*nza 7

我猜你正在处理两个不同的问题:

1)您缺少std::ostream& operator<<(std::ostream&, const Player&),这是您将Player对象流式传输到std::cout其他输出流所需的

2)你的Playerless-than比较运算符中有一个无限递归<,因为你提供的运算符自己调用.