这是重载左流操作符的正确方法吗? (C ++)

时间:2009-05-30 00:09:14

标签: c++ operator-overloading stream ostream

这个函数声明给了我错误:

ostream& operator<<(ostream& os, hand& obj);

错误是:

error C2143: syntax error : missing ';' before '&'
error C4430: missing type specifier
error C2065: 'os' : undeclared identifier
error C2065: 'obj' : undeclared identifier
error C2275: 'hand' : illegal use of this type as an expression
    see declaration of 'hand'
error C4430: missing type specifier

hand是我创建的类,display是类型为char*的公共数据成员。

有谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:7)

声明看起来正确。但错误消息表明ostream未被称为类型。请尝试添加iostream标题,然后说出std::ostream

您应该考虑的另一件事是将参数'hand'作为const引用。所以你也可以接受临时表并打印出来。

答案 1 :(得分:2)

这是在标题内吗?那你可能需要说std::ostream。请务必#include<iosfwd>

另外,您可以说const hand&