問題タブ [ambiguous-call]
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++ - 「MyBase::myMethod を使用する」が「メンバー myMethod の要求があいまいです」を解決するのはなぜですか? (ダイヤモンドパターンではありません!!!)
背景:私は、 FUSEと MTPという 2 つの異なるテクノロジで仮想ファイル構造を提供しています。どちらのフレームワークも異なるインターフェイスを必要とするため、これらのインターフェイスを提供する 2 つの基本クラスを作成しました。FUSEフレームワークはインターフェースIFuseFile
のみを認識し、MTPフレームワークはIMTPFile
インターフェースのみを認識します。これらの基本クラスには、派生クラスによって実装される純粋仮想メソッドがあります。
問題:単純に実装すると"request for member IsWriteable is ambiguous"
、コンパイラによって a が表示されます (サンプル ソースを参照)。
解決策: 解決策を探したところ、ひし形のパターンしか見つかりませんでした。しかし、共通の純粋仮想メソッドしかなく、共通のクラスはありません。私にとっては、単純なusing BASE::method
ことでうまくいきます。
質問:以前は隠しメソッドのみを使用していたのでusing BASE::method
、このコードで問題が解決する理由を説明できません。説明できますか?これは GCC のバグ/機能だけですか?
例:
c++ - static_cast が優先順位で期待どおりに機能しない
これが期待どおりに機能しない理由は何ですか?
私のgcc 4.8.1はあいまいな呼び出しについて不平を言っていますが、同じ優先順位を持つ2つのタイプがあるこのような場合、 static_cast は優先順位ルールを「修正」することは想定されていませんか?
c++ - 以下の main() の `df(1);` 式に曖昧さがないのはなぜですか?
d.f(1);
以下の式で とmain()
の間Base::f(int)
に曖昧さがないのはなぜDerived::f(int)
ですか?
c++ - C++ 継承エラー: あいまいなエラー
次のコードでは、_tmain(..) で D::f を呼び出すとあいまいなエラーが発生します。これは、B::f が A::f をオーバーライドし、A::vtable の f へのポインターが B::f を指しているためです。
1) コンパイラがあいまいなエラーを出すのはなぜですか? 誰かがそれをクリアしてもらえますか?
2) B::f(int) を B::f(char) に変更して A::f(int) をオーバーロードしようとしましたが、エラーは消えませんでした! 何故ですか?
継承図:
コード:
c++ - const char* を引数として受け取るメソッドは、const int& を受け取るメソッドとどのようにほぼ一致しますか?
次のコードは、コンパイル時にコンパイラ エラーをスローします。
コンパイル時にエラーが発生します:
エラー: オーバーロードされた 'max(const int&, const int&)' の呼び出しがあいまいです
注: 候補は次のとおりです。
注: const T& max(const T&, const T&) [with T =int]
注: const char* max(const char*, const char*)
呼び出しに一致するテンプレート メソッドがある場合、 max(const char*, const char*) は max(const int&, const int &) にどのようにほぼ一致しますか?
c++ - 関数呼び出しを推測するときのあいまいさの問題
関数 foo の 2 つのバージョンを持つ次のコードがあります。AConst バージョンが呼び出されるように const が渡される場合は、AVar 型を取る foo に変数が渡されて呼び出されるようにしたいと思います。
現在、コンパイラはあいまいなエラーを出しています。解決方法がわかりません。
更新:わずかに変更を加えたLeonidの回答に基づいて、必要に応じて機能する次のソリューションを次に示します。
c# - Razor Generator: あいまいな呼び出しとリソース ファイルの問題
現在、Razor Generator を Web アプリケーションで動作させようとしています。このチュートリアルに従っていますhttp://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/
プロジェクトで多くのエラーが発生しました。
そしてまた
UIStrings は、文字列を含む単なるリソース ファイルです。
また、オンにしましMVCBuildViews
たが、これらのエラーは、Razor Generator をインストールするまで存在しません。なぜこれらのエラーが発生するのか、私は迷っているようです。
c# - あいまいなメソッドに関して何らかのエラーが発生しないのはなぜですか?
ジェネリックに関してできることとできないことを確認するためにいじり回していました。私はこのような状況にあり、コンパイラーはあいまいなメソッド呼び出しに関してエラーをスローする必要がありますが、完全に正常にコンパイルされます。何故ですか?
java - あいまいな呼び出しを自動的に解決するために、1 つのメソッドを優先としてマークしますか?
新しいタイプのバイト ストリーム (OutputStream と同様) を定義するとします。
また、文字列をバイト ストリームに書き込めるヘルパー クラスがあり、柔軟性のために、通常の OutputStream または新しい MyByteStream のいずれかで動作するように、そのメソッドの 2 つのバージョンが必要です。
ここで、次のように、OutputStream を拡張してMyByteStreamを実装するクラスがあるとします。
次のように StringWriter の書き込みメソッドを呼び出すことはできません。
次のエラーが表示されるためです。
次のように、DebugStream をバイト ストリームの 1 つに明示的にキャストすることで、問題を解決できます。
しかし、この 2 つのメソッドはどちらにしてもまったく同じことを行うため、どこでもキャストを行う必要はありません。これを回避する方法はありますか?このようなあいまいな呼び出しに対して優先されるメソッドの 1 つを定義するのは好きですか? それとも、いくつかのジェネリックのトリックですか?
ノート:
コンパイル時の型安全性を維持したいので、次の行に沿った「解決策」が出ています。