【发布时间】:2017-04-04 02:53:53
【问题描述】:
我正在尝试在函数上重载 operator
#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;
}
这只是我尝试解决此问题的一个示例。我在这个中收到错误 'do_something_more':indeclared identifier。
感谢您的帮助!
【问题讨论】:
-
do_something_more()是foo的成员函数,你需要一个实例来调用它。 -
或将其设为静态并使用
a << foo::do_something_more;... 或只是非会员。 -
这些东西没有任何意义。
-
@Norbert 你是不是想重载
std::ostream& operator<<(std::ostream&, const foo&)函数? -
我正在寻找确切的行为
a << do_something_more;。编辑:好的。我以非成员friend ostream& do_something(ostream& os)的身份完成了我的功能,这很有效。我被困了很多小时,答案很简单。感谢您的帮助:)
标签: c++ operator-overloading overloading