私は、オーバーロードされたメソッドを持つクラスを持っています。特定のサブクラスは、これらの型の両方を継承します。それは、static_cast<class>(obj)
あいまいなオーバーロード関数呼び出しのデフォルトの作成
struct A {};
struct B {
void foo(const A) {
/*impl*/
}
void foo(const B) {
/*impl*/
}
};
struct C : A, B {
};
int main() {
C c;
B b;
b.foo(c); //ambiguous
}
を呼び出すすることを避けるために、デフォルトのメソッド呼び出しを設定することが可能である特定のメソッドの呼び出しに、コンパイラのデフォルトを持ってする方法はありますか?
*巧妙で洗練された回避策が受け入れられました。
'void foo(const C)'を宣言して、デフォルトのものを呼び出すことはできますか? – wally
申し訳ありませんが、fooはスーパークラスからのメソッド呼び出しで、Cはサブクラスです。私はこれを紹介するために私の質問を編集します。 –
おそらく、あなたのサンプルを投稿する前にそれをコンパイルしてみてください。多くの構文エラーがあり、 'foo'はメンバ関数であればそのように呼び出すことができないので、今混乱しています。 – wally