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对象流,所以我认为我不需要重载<<.
我对发生的事情有一些了解,因为编译器采用了我的特定定义<然后不打算寻找更一般的情况.我的问题是,我现在需要重载<<运算符以返回其一般功能,还是有更简单的解决方案?
感谢您提供的任何帮助!
我猜你正在处理两个不同的问题:
1)您缺少std::ostream& operator<<(std::ostream&, const Player&),这是您将Player对象流式传输到std::cout其他输出流所需的
2)你的Playerless-than比较运算符中有一个无限递归<,因为你提供的运算符自己调用.