問題タブ [implicit-conversion]

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

c++ - `is_base_of`はどのように機能しますか?

次のコードはどのように機能しますか?

  1. Bそれはプライベートベースであることに注意してください。これはどのように作動しますか?

  2. operator B*()constであることに注意してください。どうしてそれが重要ですか?

  3. なぜtemplate<typename T> static yes check(D*, T);より良いのですstatic yes check(B*, int);か?

:これは、の縮小バージョン(マクロは削除されています)ですboost::is_base_of。そして、これは幅広いコンパイラで機能します。

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

c# - How do you make a Factory that can return derived types?

I have created a factory class called AlarmFactory as such...

Heartbeat alarm is derived from Alarm. I am getting a compile error "cannot implicitly convert type...An explicit conversion exists (are you missing a cast?)". How do I set this up to return a derived type?

EDIT

THANK YOU ALL FOR YOUR ANSWERS. I fixed the compile error within ten minutes which is why i did not post the whole error. But I appreciated the different approaches that were mentioned.

For the record it was "Cannot implicitly convert type 'goAlarmsCS.HeartbeatAlarm' to 'goAlarmsCS.Alarm' An explicit conversion exists (are you missing a cast?)". (I think.) The error was occurring on line 8.

Seth

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

java - 条件式にJavaエラーがありませんか?

メソッドtest1()test2()を使用すると、Type Mismatch Error: Cannot convert from null to intが発生します。これは正しいです。しかし、なぜメソッドで同じ結果が得られないのtest3()ですか? その場合、Javaは条件式をどのように異なる方法で評価しますか? (明らかに、 aNullPointerExceptionは実行時に上昇します)。欠落エラーですか?

前もって感謝します!

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

c# - C#列挙型から文字列への自動変換?

コンパイラに Enum 値を文字列に自動的に変換させて、毎回 ToString メソッドを明示的に呼び出すことを回避できるようにすることは可能ですか? これが私がやりたいことの例です:

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

c# - C#での暗黙的な配列キャスト

暗黙のキャスト演算子が定義された次のクラスがあります。

これで、AをBに暗黙的にキャストできます。

しかし、なぜA[]をB[]に暗黙的にキャストできないのでしょうか。

ありがとう、マルキ。

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

scala - Runnable への暗黙の変換?

演習として、関数を受け入れて を生成する暗黙的な変換を作成しようとしましたRunnable。そうすれば、Runnableオブジェクトを受け入れる Java メソッドを呼び出して、それらをクロージャのように使用できます。

暗黙の変換は簡単です:

しかし、私はそれを呼び出す方法がわかりません。一度に評価することなく、Unit を返す引数なしの関数をどのように渡しますか? たとえば、次のように「12」を出力したいのですprint("2")が、一度に評価されるため、代わりに「21」を出力します。

print("2")一度に評価されるものではなく、関数の本体として扱うようにコンパイラに指示するにはどうすればよいですか? 私が試したいくつかの可能性、

また

は正当な構文ではありません。

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

c# - 式内のオペランドは、次の規則に従ってより大きな型にプロモートされますか?

数式に異なる数値タイプのオペランド(定数と変数)が含まれている場合、次の規則に従って、オペランドはより大きなタイプにプロモートされます。

  1. オペランドがタイプ、、、、、の場合、それらはタイプに変換さbyteれますsbytecharshortushortint
  2. オペランドの1つがである場合int、すべてのオペランドはに変換されますint
  3. 式にタイプuintとのオペランドも含まれている場合int、すべてのオペランドは次のように変換されます。long
  4. オペランドの1つが、の場合long、すべてのオペランドはに変換されますlong
  5. 式にタイプulongとのオペランドが含まれている場合、オペランドは次のlongように変換されます。float
  6. オペランドの1つがである場合float、すべてのオペランドはに変換されますfloat
  7. オペランドの1つが、の場合double、すべてのオペランドはに変換されますdouble

数値式にさまざまな型のオペランドが含まれているとすると、すべてのオペランドが最初に単一の数値型に変換され、次にランタイムが結果を計算しようとしますか?たとえば、変数b1b2byte型であり、i1が型である場合、計算の前にintwillb1とb2getがintに変換され(b1+b2)ます。

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

c# - C# 暗黙の演算子と ToString()

css 値を表す独自のタイプを作成しています (ピクセルなど 12px など)。加算/減算/乗算/... 私の型と int をできるようにするために、int との間で 2 つの暗黙の演算子を定義しました。1つのことを除いて、すべてがうまく機能します..私が書いた場合:

「10px」ではなく「10」を取得します - ToString() メソッドの代わりに int への暗黙的な変換が使用されます。どうすればそれを防ぐことができますか?

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

c++ - オーバーロードされた関数呼び出しにおける C++ の暗黙的な変換とあいまいさ

私は次の問題に直面しています: クラス V (ベクトルなど) があり、そこから CI と I (const_iterator と iterator を考えてください) の 2 つのクラスを生成できます。const V がある場合は、CI しか生成できません (ここでも iterator と const_iterator を考えてください)。

基本的に、(const V& v) を (CI ci) に、(V& v) を (I i) に置き換えたいと思います。さらに、V obj を I または CI を期待する関数に直接渡すことができるようにしたいため、V および const V から CI および I への暗黙的な変換が行われます。

私が直面している問題は、オーバーロードされた関数は (const V& v) と (V& v) を区別できますが、V obj を渡すときに (CI ci) と (I i) を「区別」できないことです。

コード内:

CI と I でコンストラクターを定義する代わりに、V で変換演算子を定義できたことに注意してください (同等ですか?)。

余分な間接化を追加せずにこの問題を解決する方法はありますか (つまり、fun 関数は変更できず、v を fun に直接渡す必要がありますが、他のすべてを自由に変更できます)。

助けてくれてありがとう!

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

c# - LINQ と Nullable ブール値を使用する C#

Y、N、またはDBnullのテキストフィールドを取り、ブール値を入力する以下のlinqクエリがありますか? フィールドの値に応じて、True、False、または null のいずれかのパラメーター。

問題の行は

読んだ後、インラインの2番目と3番目の引数が同じタイプであるか、暗黙的に相互に変換可能である必要があると述べているドキュメントを見つけました。

私の質問は、この制限を回避して目的の結果を得るにはどうすればよいですか?

私は C# に比較的慣れていないので、そのすべての癖/機能にまだ慣れていません。