试图重载<<阶级功能

时间:2016-11-20 18:34:22

标签: c++ operator-overloading overloading

我试图重载运算符<<在功能上。我试图解决这个问题,我坚持了几个小时。我已经找到了很多关于如何在ostream上执行此操作的示例,但没有一个针对我的具体问题。

#include <iostream>

class foo
{
public:
   foo& operator<< (foo& (*pf)(foo&))
   {
     return pf(*this);
   }
   foo& do_something_more(foo& os)
   {
     return os;
   }
};

ostream& do_something(ostream& os)
{
   os << "1." << "\n" << "2.";
   return os;
}

int main()
{
    foo a;

    std::cout << do_something; // this works
    a << do_something_more; // this do not

    system("pause");
    return 0;
}

这只是我试图解决这个问题的一个例子。我收到错误&#39; do_something_more&#39;:此声明中的

感谢您的帮助!

1 个答案:

答案 0 :(得分:-4)

如错误所示,您尚未声明任何名为do_something_more的对象。这是你的foo类中的一个方法。试试cout<<a.do_something_more();

即便如此,我也不确定它是否会奏效。