让编译器感知 <<为特定类定义
我用这个问题编辑了我的帖子,但没有得到答案。
我超载了<<对于类,Score
(在score.h 中定义),位于score.cpp 中。
ostream& operator<< (ostream & os, const Score & right)
{
os << right.getPoints() << " " << right.scoreGetName();
return os;
}
(getPoints
获取一个 int
属性,getName
一个 string
一个)
我在 main 中进行测试时收到此编译错误(),包含在 main.cpp 中
binary '<<' : no operator found which takes a right-hand operand of type 'Score' (or there is no acceptable conversion)
编译器为何不“识别”该重载有效? (包含是正确的)
感谢您的宝贵时间。
编辑:
根据要求,导致错误的代码:
cout << ":::::\n" << jogador.getScore() << endl;
jogador
是一个 Player
对象,其中包含一个 Score
对象。 getScore
返回该属性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许您没有在
score.h
中声明您的operator<<
?它通常应包含类似以下内容:编辑:更准确地说,应该是:
您绝对不应该在标头中包含
using namespace std;
,因此您需要std::
才能正常工作。Perhaps you didn't declare your
operator<<
inscore.h
? It should normally contain something like:Edit: More accurately, that should be:
You definitely should not have a
using namespace std;
in a header, so you need thestd::
for it to work correctly.尝试将
operator<<
声明为类中的 friend 函数:这将使您的
Score
结构很好地适合打印语句:如有疑问,请查看C++ 常见问题解答。
Try declaring
operator<<
as a friend function in your class:This will allow your
Score
structure to fit nicely into printing statements:When in doubt, check the C++ FAQ.