#include struct A { virtual void afn() { puts("A::afn"); } // A must have vtbl to make this crash }; struct B { virtual void bfn() { puts("B::bfn"); } }; struct C : A, B { virtual void bfn() { puts("C::B::bfn"); } }; void Bcall(B& b) { b.bfn(); } int main() { C c; puts("calling C::B::bfn crashes..."); Bcall(c); return 0; }