struct virt { virt() : i(2) {} virt(int i) : i(i){} int i; }; struct der1 : public virtual virt { der1(int i) : virt(i) {} } struct der2 : public virtual virt { der2(int i) : virt(i) {} } struct top : public der1, public der2 { top () : der1(0), der2(1) {} };
gets you: ~/ootbc/members/src$ g++ foo.cc foo.cc:5: error: multiple types in one declaration (actual error is code is trying to construct a virtual base class) -- Summary: poor diagnostic Product: gcc Version: 3.4.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: igodard at pacbell dot net CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21907