問題タブ [operator-keyword]

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 投票する
3 に答える
2252 参照

c++ - C ++:カスタムデータ型-型キャストとユニオンの問題

私がやろうとしているのは、他のすべてのプリミティブ型と同じように動作する新しいカスタムデータ型を作成することです。具体的には、このデータ型は固定小数点の分数のように見えます。このデータ型を表す「classFixedPoint」というクラスを作成しました。その中に、「FixedPoint」から「int」、「double」、「unsignedint」などに型キャストする方法があります。これで問題ありません。

さて、キャストしたい場合はどうなり"int" to "FixedPoint"ますか?もともと私の解決策はコンストラクターを持つことでした:

これは機能します...しかし、次のようにユニオンに入れることはできません。

「FixedPoint」には暗黙の自明なコンストラクターがないため、これは機能しません(コンストラクター「FixedPoint(inti)」を定義しただけです)。

cast from some type T to type FixedPoint without explicitly defining a constructor要約すると、全体の問題は「ユニオンでFixedPointタイプを使用できるようにしたい」ということです。

解決策はオンラインで証拠を見つけることができないと思います。「int」から「FixedPoint」にキャストするオーバーロードされたグローバル型キャスト演算子を定義します。

クラスコンストラクターを使用せずにこれを行う方法はありますか?このクラスをユニオンで使用できるようにしたいと思います。私が試したこと(グローバルスコープで):

そして、組合がコンストラクターを好まないことを示す小さな例(彼らはPODが好きです)

VisualStudioで見られるこのエラーは次のとおりです。

何か案は?ありがとう

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

function - 関数としてlistcons演算子(a :: b)を使用する

F#を使用すると、演算子を:で囲むことで関数に変換できます。( )たとえば、(+)タイプはint -> int -> intです。

list cons演算子を使用してこれを行うことは可能::ですか?

通常の二項演算子のようには動作しません。

そして、このList.Consメソッドはタプルを取ります。カレーではありません。

(これができると便利です。たとえば、foldの観点からマップを実装するために使用できます)。

0 投票する
2 に答える
1094 参照

c++ - c++: 疎行列のオーバーロード + 演算子

マトリックス用語の単一リンクリストのarrayListで構成されるスパースマトリックスを作成しています(マトリックス用語には行、列、および値が含まれます)。+ 演算子のオーバーロードに問題があります。正常に動作する add メソッドがありますが、それを使用して + 演算子をオーバーロードしようとすると、次のエラーが発生します。

オーバーロードされた + 演算子の実装は次のとおりです。

エラーを与える main の行は c = a + b (a、b、c はすべて疎行列) です。a.add(b,c) を実行すると、すべて正常に動作することに注意してください。a = b などを実行するときに機能する = 演算子もオーバーロードしましたが、投稿したエラーメッセージでそれについて不平を言っているようです。何が問題なのか本当にわかりません。何か案は?

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

binary - バイソンで二項演算子をどのように定義する必要がありますか?

私は bison を使用して C でパーサーを作成しています。これまでに試したすべての状況で正しく動作するように見えますが、2 項演算子 (単項 NOT 演算子の場合は 1 つ) で多数のシフト/リデュース警告が表示されます。良い)。

bison --verbose を使用して .y ファイルを実行すると、次のように表示されます。

二項演算子を実際に解析する問題は見られませんが、とにかくシフト/削減の問題を解決する必要があるようです。競合がどこにあるのかわかりません - set_existence プロダクションは完全に無関係のようです。私の最善の推測 (暗闇でのショット) は、EQ が二項演算子 (等価比較) および代入 (たとえば、"foo = bar = baz;" が設定される) として使用されるという事実と関係がある可能性があるということです。 bar と baz が等しいかどうかに基づいて、foo を true/false に変換します)。等価比較を == ("foo = bar==baz;") に変更すると、パーサーは期待どおりに動作しますが、同じシフト/削減の競合が発生します。

編集:結合性が指定されています:

0 投票する
5 に答える
6681 参照

c++ - C++ での operator= の継承に関する問題

operator= の継承に問題があります。このコードが機能しない理由と、それを修正する最善の方法は何ですか?

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

c# - C#3.5のスーパークラスでキャスト演算子を定義するにはどうすればよいですか?

int、stringなどの標準データ型にいくつかのプロパティを追加するためのコンテナクラスがあります。このコンテナクラスは、そのような(標準タイプの)オブジェクトのオブジェクトをカプセル化します。他のクラスは、追加されたプロパティを取得/設定するためにコンテナクラスのサブクラスを使用します。ここで、サブクラスが、追加のコードを含まずに、カプセル化されたオブジェクトとそれ自体の間で暗黙的にキャストできるようにします。

これが私のクラスの簡単な例です:

私の実際のコンテナクラスには2つの型パラメータがあります。1つはカプセル化されたオブジェクトの型(string、int、...)用で、もう1つはサブクラス型(SubClassなど)用です。

どうすればコードを作成できますか

サブクラスの最小限のコードで実行可能ですか?

0 投票する
5 に答える
10306 参照

c++ - 演算子のオーバーロードと名前空間

重複の可能性:
非メンバー演算子のオーバーロードはどこに配置する必要がありますか?

std::ostream& operator<<(std::ostream& os, const Foo& foo)SO をブラウジングしているときに、 aまたは aのオーバーロード/定義に関する質問や回答をよく見つけますFoo operator+(const Foo& l, const Foo& r)

これらの演算子をいつどのように作成するか (しないか) は知っていますが、そのnamespaceことについて混乱しています。

次のクラスがある場合:

namespace異なる演算子の定義はどちらに記述すればよいですか?

同じ質問が にも当てはまりますoperator+。では、ここでの良い習慣とは何ですか?その理由は何ですか?

0 投票する
2 に答える
5848 参照

python - Python "++" 演算子が機能しない

重複の可能性:
Python: インクリメント演算子とデクリメント演算子の動作

こんにちは、私はこれを試しました。

数値はまったく変化せず、初期化時に常に値を表示します

変更++numするnum+=1と動作します。

それで、私の質問は、その++オペレーターがどのように機能するかです。

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

binary - ANTLR:単項演算子と二項演算子を区別する問題(マイナス記号など)

私はANTLR(3.2)を使用して、かなり単純な文法を解析しています。残念ながら、私は少し問題に遭遇しました。次のルールを取ります。

OPERATORには、MINUSで定義されているものと同じマイナス記号('-')が含まれています。現在、ANTLRはこれら2つのルールを処理できないようです。どちらかを削除すると、すべて正常に動作します。

誰かアイデア?

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

c++ - C ++のジェネリッククラスでの+演算子のオーバーロード

フォレスト クラスで + 演算子をオーバーロードしようとしています。フォレストは木のコレクションであり、+ 演算子は 2 つのフォレストを 1 つに結合することになっています。クラス定義として次のコードがあります。

以下は私の operator+ の実装です:

コンパイル時に次のエラーが発生します。

行 28 は、私の operator+ 実装の署名を参照しています。

私はそれを修正するために、戻り値の型に追加することになっていると思います:

しかし、それは私に次のエラーを与えます:

誰でもこれで私を助けることができますか?とても感謝しています。