問題タブ [operator-overloading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2988 参照

c++ - 正規演算子のオーバーロード?

C++ の数値に似たクラスで算術演算子のオーバーロードを実装するための標準的または推奨されるパターンはありますか?

C++ FAQ から、ほとんどの問題を回避する例外セーフな代入演算子があります。

しかし、他の演算子 (+、+= など) については、組み込み型の演算子のように振る舞うようにする以外に、ほとんどアドバイスはありません。

これらを定義する標準的な方法はありますか? これは私が思いついたものです - 私が見ていない落とし穴はありますか?

0 投票する
4 に答える
154018 参照

c# - C# で [] 演算子をオーバーロードするにはどうすればよいですか

クラスに演算子を追加したいと思います。現在GetValue()、演算子に置き換えたいメソッドがあり[]ます。

0 投票する
3 に答える
809 参照

c++ - クイック アンド ダーティー オペレーター!=

私のクラスでは、operator!=を返すことで簡単に書くことがよくあります!(*this == rhs)

これを行うことで明らかな問題は見られませんが、誰かが知っているかどうか尋ねたいと思いました。

0 投票する
3 に答える
413 参照

operator-overloading - 削除オーバーロード、再帰オーバーフロー

やあみんな私は簡単なテストを書きました。delete を呼び出して deleteMe を呼び出してから、それ自体を削除します。これの目的は、lib によって割り当てられた obj を正常に削除できるようにすることです。(crtまたはw / eによるクラッシュは望んでいません)。

これを削除すると、スタックオーバーフローが発生します。それがなければ、msvc は 4 バイトがリークしたと言います。test を呼び出さないと 0 がリークします。再帰の問題がある場合はどうすれば削除できますか? -編集-これをより明確にするために。crtが原因で、LIBがプログラムの代わりにdelete(したがってdeleteMe)を呼び出すようにしたい

0 投票する
1 に答える
779 参照

c++ - 削除、純粋な仮想関数呼び出しのオーバーロード

したがって、抽象仮想クラスの削除をオーバーロードしたいと思います。これにより、別のライブラリにある派生クラスで deleteMe() が呼び出されます。これはエラー/クラッシュを防ぐためです。C++ mix new/delete between libs?

基本クラスで delete から delete me を呼び出すと、「pure virtual func call」というエラーが表示されます。次に、それがすでに私の dtor を呼び出していることがわかりました。delete obj; を記述できるように、dtor を呼び出さないようにこのコードをオーバーロードするか、このコードを記述するにはどうすればよいですか。obj->deleteMe() を呼び出してから、独自の削除関数と dtor を呼び出しますか?

0 投票する
3 に答える
5328 参照

actionscript-3 - AS3 で [] 演算子をオーバーロードする

独自のコレクション クラスの作成を終えたばかりで、for each または単純な for 構成で反復可能にしたい、または collection[key] 表記を使用して要素にアクセスしたいだけです。

私はgetElementAt(index):MyOwnElement関数を書きましたが、それを使用することは、角括弧を使用するほど魅力的ではありません.反復を開始することさえできません..

何か方法はありますか?

0 投票する
1 に答える
933 参照

c++ - オーバーロードされた * 演算子で cout << が機能しないのはなぜですか?

私は、主に Overland の C++ Without Fear に基づいて、最初のクラスを作成しています。オーバーロードされた友人の ostream operator<< を作成しました。これは正常に動作します。* 演算子もオーバーロードしましたが、うまくいきました。うまくいかないのは、 * 演算子の結果を直接出力しようとしたときです。

情報については、ここに私のプロトタイプがあります:

私が知る限り、operator* は BCD を返すので、operator<< はそれを出力できるはずです。助けてください!

0 投票する
3 に答える
1377 参照

c++ - オーバーロードされたインクリメントの戻り値

The C++ Programming Language Stroustrup では、inc/dec オーバーロードの次の例を示しています。

前置演算子は参照によって返されるのに、後置演算子は値によって返されるのはなぜですか?

ありがとう。

0 投票する
6 に答える
408285 参照

c++ - ostream の << 演算子を適切にオーバーロードする方法は?

行列演算用に C++ で小さな行列ライブラリを作成しています。ただし、以前はそうではなかったのに、私のコンパイラは文句を言います。このコードは 6 か月間棚に置かれ、その間にコンピューターを debian etch から lenny (g++ (Debian 4.3.2-1.1) 4.3.2) にアップグレードしましたが、同じ g++ を使用する Ubuntu システムでも同じ問題が発生します。 .

私のマトリックスクラスの関連部分は次のとおりです。

そして「実装」:

これは、コンパイラによって表示されるエラーです。

matrix.cpp:459: エラー: 'std::ostream& Math::Matrix::operator<<(std::ostream&, const Math::Matrix&)' は 1 つの引数を取る必要があります

私はこのエラーに少し混乱していますが、6 か月間多くの Java を実行した後、私の C++ は少し錆びてきました。:-)

0 投票する
1 に答える
9211 参照

vb.net - VB.NET (Of T) 比較演算子

サンプル コードでは、「エラー コメント」のある行で次のエラーが発生します。

  • 演算子 '<' は、タイプ 'T' および 'T' に対して定義されていません。

VB が適切な T 演算子を自動的に呼び出さないのはなぜですか? (つまり、T が整数の場合、整数比較関数を呼び出します。)

これをエレガントな方法で機能させることは可能ですか?

これは .NET 2.0 用です。

編集- 興味のある人のためにコードを更新しました。