我有以下代码:-
#include <iostream>
#include <vector>
using namespace std;
template <typename I>
class A {
public:
void f (I* i) {
lis.push_back(i);
}
vector <I*> lis;
};
class B {
public:
int b;
};
class C {
public:
double c;
};
class D : public A<B>,
public A<C> {
public:
void g () {
cout<<"g\n";
}
};
class E : public B, public C {
public:
float e;
};
int main() {
E* e;
D d;
B* b = (B*) e;
d.f (b);
}
这给了我一个错误说:-
ambig.cpp: In function ‘int main()’:
ambig.cpp:42:5: error: request for member ‘f’ is ambiguous
ambig.cpp:9:10: error: candidates are: void A<I>::f(I*) [with I = C]
ambig.cpp:9:10: error: void A<I>::f(I*) [with I = B]
关于如何解决这个问题的任何想法?