The following code generates warning C4250. My question is, what’s the best solution to it?
class A { virtual void func1(); } class B : public A { } class C : public A { virtual void func1(); } class D : public B, public C { } int main() { D d; d.func1(); // Causes warning }
According to what I’ve read it should be possible to do this:
class D : public B, public C { using B::func1(); }
But, this doesn’t actually do anything. The way I’ve currently solved it is:
class D : public B, public C { virtual void func1() { B::func1(); } }
What’s everyone’s view on this?
I had the same warning for the following code:
This bug report for Visual C++ 2005 in msdn suggests that this is a known bug that was considered not important enough to fix… They suggest to disable the warning in this case by using a pragma. I think it is safe also in your case, but you should use virtual inheritance as shown in the answer by Gal Goldman.