#ifndef a_h #define a_h enum GlobalEnum { globalenum1=1, globalenum2 }; /* This function should be static as it will be emitted into the code for * every module. All _static targets would fail here with a multiple * definition if this is not static. */ static GlobalEnum global_test(GlobalEnum e) { return e; } class A { public: A() {} virtual ~A() {} void hello() {} enum MemberEnum { memberenum1=10, memberenum2 }; virtual MemberEnum member_virtual_test(MemberEnum e) { return e; } virtual GlobalEnum global_virtual_test(GlobalEnum e) { return global_test(e); } }; /* This class overrides nothing. Inherited classes should see base functions. */ class A_Intermediate : public A { public: A_Intermediate(){} ~A_Intermediate(){} }; #endif