virtual-inheritance

C++: calling a virtual base class's overloaded constructor

Hi, is there a (practicable) way to by-pass the normal (virtual) constructor calling order? (Hard to describe in one sentence, see the) Example: class A { const int i; public: A() : i(0) { cout << "calling A()" << endl; } A(int p) : i(p) { cout << "calling A(int)" << endl; } }; class B : public...

C++ virtual inheritace and typecasting/copy constructor confusion

I have the code below: class A { }; class B: public virtual A { public: B() { cerr << "B()"; } B(const A& a) { cerr << "B(const A&)"; } }; class C: public B { }; int main(int argc, char **argv) { B *b = new B(C()); } To my surprise B(const A& a) isn't called. Why is that? ...

What is virtual inheritance?

Possible Duplicate: In C++ virtual base class? The virtual keyword is used to remove the ambiguity, but how does it actually work? I have four classes: a, b, c, and d. I am doing: class a {public int a;}; class b: virtual public a {}; class c: virtual public a {}; class d:public b,public c {}; This works, but what actu...

MSVC9.0 bug or misunderstanding of virtual inheritance and friends?

consider the following code: class A { friend class B; friend class C; }; class B: virtual private A { }; class C: private B { }; int main() { C x; //OK default constructor generated by compiler C y = x; //compiler error: copy-constructor unavailable in C y = x; //compiler error: assignment operator unavailable in...