August 20, 2009 Re: explicit override for virtual functions of several base classes | ||||
---|---|---|---|---|
| ||||
Recently I faced a problem of implemented 2 interfaces with overlapped function names in one derived class. The code below was tested to compile and work properly with MSVC 8.0, but fails to compile with DMC. Does C++ standard define proper way of explicit overriding of virtual functions, that will work for both compilers? googling on this problme didn't help :( #include <stdio.h> class A { public: virtual void func() = 0; }; class B { public: virtual void func() = 0; }; class C: public A, public B { public: virtual void A::func() { printf("override A\n"); } virtual void B::func() { printf("override B\n"); } }; void call_a(A &a) { a.func(); } void call_b(B &b) { b.func(); } void call_c(C &c) { printf("print C\n"); ((A&)c).func(); ((B&)c).func(); } int main() { C c; call_a(c); call_b(c); call_c(c); } |
Copyright © 1999-2021 by the D Language Foundation