Xでのメソッドテストが曖昧で、なぜこれを修正できますか?関数のオーバーロードでタグを使用する
struct A{};
struct B{};
template<typename T>
struct I { void test(T){} };
struct X : public I<A>, I<B> {};
int main(int argc, const char *argv[])
{
X x;
x.test(A());
return 0;
}
コンパイルエラー:それはX
二基底クラスのメンバーであるため
In function ‘int main(int, const char**)’:
error: request for member ‘test’ is ambiguous
error: candidates are: void I<T>::test(T) [with T = B]
error: void I<T>::test(T) [with T = A]
現在のコードがあいまいでコンパイルされていないこと、このコードがあいまいさを修正しているが、スタイルが気に入らないことをお勧めしますか? – Useless
@Useless、私は明確にするために少し質問を精緻化しました – Allan