問題タブ [explicit-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.
c++ - コンパイラは、条件として使用される式に明示的な変換を適用できませんでした
これが私のコードです:
C ++のプライマー(5番目)では、次のように書かれています:
コンパイラは、条件として使用される式に明示的な変換を適用します
しかし、この場合、そのような変換はありません。を削除するexplicit
と、コードは正常に機能します。
ただし、に変更
explicit operator int(){ return i; }
すると
explicit operator bool(){ return i != 0; }
、
それぞれに変更if(s == 4)
するif(s)
と、コードは正常に機能します。
変換規則は少し混乱しているように見えますが、これについて詳しく説明できる人はいますか?
c++ - これが変換コンストラクターへの暗黙のキャストを行わないのはなぜですか?
だから私はこのコードを持っています:
Foo foo = Bar(13)
暗黙のキャストを使用してから、変換コンストラクターを使用したと思っていたでしょう。しかし、それはエラーです:
エラー: から
Bar
非スカラー型への変換がFoo
要求されました
ただし、これは正常に機能しますFoo foo(Bar(13))
。暗黙のキャストが明示的な変換の構築に使用されるのに、暗黙の変換の構築には使用されないのはなぜですか?
https://en.cppreference.com/w/cpp/language/copy_initializationから得たルールは次のとおりです。
変換コンストラクターが使用された場合は prvalue 式である変換の結果は、オブジェクトを直接初期化するために使用されます。
c# - GenericType の辞書を TypeCast する方法
次のような辞書オブジェクトがあります:-
今、私はこれをタイプキャストしたい:-
そうする方法はありますか?