私は暇な時間にC++について学んでおり、添え字/ []
演算子をオーバーロードするクラスを実装しています。オペレータオーバーロードのコンテキストを具体的にする
myObject[i,j,...]
、引数は、例えばstring
Sまたはint
S
Iを見つけることができる:ここで、Iは、添字演算子次のように(カンマで区切られた)2つの以上の引数を渡すことができるようにしたかったですC++では添字演算子が複数の引数を受け入れることはできません。しかし、私はthis threadにカンマ演算子をオーバーロードすることについて、その '問題'の代替解決策として読んだ。
この例では、コンマ演算子は2つのカスタムEnum
で非常に固有のシグネチャを使用してオーバーロードされていますが、一般的な型ペアのコンマ演算子をオーバーロードすることはお勧めできません。場合)。
私の限られたC++知識のおかげで、コンマ演算子のオーバーロードを特定の状況やコンテキストに限定して使用することが可能かどうかが不思議に思えました。たとえば、添字演算子他の場所で干渉を引き起こすことなく、私が興味を持っている機能を私に与えてくれます。
これはクールです!ありがとう。したがって、名前空間を使用して、理論的には例えば'std :: pairオペレータ、(int lhs、int rhs){return {lhs、rhs}; }そのスコープの範囲外でカンマ演算子の他の用途を混乱させることなく、 –
TBZ92
'演算子'は、クラスまたは列挙型の少なくとも1つのパラメータを持つ必要があります。 'int' /' int'は不正です。 – Jarod42