这是我到目前为止所尝试的:
class Fahrzeug
{
public:
std::string Id() const;
void Id(const std::string &id);
friend std::ostream& operator<< (std::ostream &out, const Fahrzeug &fzg)
{
out << Id();
return out;
}
private:
struct DatenImpl;
boost::scoped_ptr<DatenImpl> _datenImpl;
};
这会产生编译器错误:
错误C2352:Id() - 非静态成员函数的非法调用
如何实现ostream运算符&lt;&lt;对于“疙瘩”课程?
答案 0 :(得分:9)
您的定义应该是:
friend std::ostream& operator<< (std::ostream &out, const Fahrzeug &fzg)
{
out << fzg.Id(); // <--- qualify call to Id()
return out;
}
虽然在class
内定义了运营商,但该运营商不是class
会员。