【发布时间】:2014-01-14 07:32:54
【问题描述】:
我一直在查看许多不同的示例和解释,但没有一个能够真正回答我正在寻找的内容。我有三个类,每个类都有一个名为 connect 的方法:
class foo { ... }
void foo::connect(bar br) { ... }
class bar { ... }
bar& bar::connect(baz bz) { ... }
class baz { ... }
baz& baz::connect() { ... }
在我的主课中,我像这样“连接”它们:
foo.connect(bar);
bar.connect(baz);
baz.connect();
或:
foo.connect( bar.connect( baz.connect() ) );
(我知道这只是简单的解释,如果需要我可以更好地解释)
所以,我试图重载运算符“>>”,以便在主函数中包含类似的内容:
foo >> bar >> baz;
对于第一个运算符,它可以工作,所以如果我简单地执行以下操作,它就可以正常工作:
foo >> bar.connect(baz.connect);
但是,当我设置另一个 '>>' 运算符 g++ 返回此错误:
error: no match for ‘operator>>’ in ‘operator>>((* & foo), (* & bar)) >> baz.baz::connect()’
我认为我没有正确地重载运算符“>>”:
bar& operator>> (bar &br, baz &bz)
{
...
}
感谢您的帮助:)
【问题讨论】:
-
注意,不建议使用
>>进行非流和非位移操作。 -
对,但我在操作符 '>' 上遇到了更多问题,所以我开始尝试这个,看起来它正在工作。无论如何,也许这不是一个好主意。谢谢!
标签: c++ operators overloading definition