我想重载“接收器”操作符,以便我可以执行此操作:someClass >> myClass
。
...其中myClass是我需要为运算符重载的类。
希望这是有道理的。
答案 0 :(得分:2)
>>
是运营商。你想重载operator>>
。签名将如下所示:
someClass& operator>>(someClass&, myClass&);
答案 1 :(得分:2)
正如@Mysticial指出的那样,你需要重载operator>>
才能做到这一点。
虽然过载可以不成为myClass
的成员。它必须是someClass
的成员,否则是全局重载。
class someClass {
// ...
someClass &operator>>(myClass &);
};
或:
someClass &operator>>(someClass &, myClass &);
如果操作符不能/不能更改someClass
对象的状态,您可能希望通过const引用传递第一个参数(在这种情况下,您还将返回一个const引用)。
当然,返回一个someClass
并不是真的需要,但它是这种运算符通常被接受的做法(它允许将运算符链接到a >> b >> c;
)
答案 2 :(得分:0)
您需要使用argument-dependent lookup ...我没有经常使用它,但您需要使用ADL重载operator >>
(请参阅链接)。