私はこれを行うことができるように "受信者"演算子をオーバーロードしたい:someClass >> myClass
。どのオペレータに過負荷を掛ける必要がありますか?
...。
希望は意味があります。
私はこれを行うことができるように "受信者"演算子をオーバーロードしたい:someClass >> myClass
。どのオペレータに過負荷を掛ける必要がありますか?
...。
希望は意味があります。
@Mysticialが指摘したように、あなたがこれを行うにはoperator>>
をオーバーロードする必要があります。
そのオーバーロードはではなく、でもmyClass
のメンバーになります。それは、someClass
のメンバーであるか、またはグローバルオーバーロードでなければなりません。
class someClass {
// ...
someClass &operator>>(myClass &);
};
か:
someClass &operator>>(someClass &, myClass &);
オペレータは/ someClass
オブジェクトの状態を変更することはできませんしない場合は、その場合には(const参照であなたを最初のパラメータを渡すこともできますまた、const参照を返します)。
、someClass
を返すことは、本当に必要な、それはオペレータのこの種の通常許容されるプラクティスですされていません(それはa >> b >> c;
のようなもののための演算子をチェーンできます)
myClassを編集してsomeClassが送信するものを「受信できる」ようにするにはどうすればよいですか?私はいくつかのクラスを編集することはできません。 – Cheetah
上で示したように、 'someClass'だけを残しておかなければならない場合は、グローバルなオーバーロード(しばしば' myClass'の友人)を作る必要があります。 Mehrdadが指摘しているように、ネームスペースを使用している場合、ADLが必要です(myClassと同じネームスペースに入れたいと思うでしょう)。 –
あなたはargument-dependent lookupを使用する必要があります...私はそれを頻繁に使用していませんが、operator >>
にADLをオーバーロードする必要があります(リンクを参照)。
>>
はです。あなたはオーバーロードしたいoperator>>
。署名は次のようになります。
someClass& operator>>(someClass&, myClass&);
うーん... '' >> operator ... – Mysticial