I think the following code should compile. On egcs-2.93.11, I get b.cc: In method `A::B::B()': b.cc:3: `enum A::Foo A::f1' is inaccessible b.cc:9: within this context I've added this as g++.martin/access1.C Regards, Martin class A{ public: enum Foo{f1,f2}; class B{ friend class A; Foo f; public: B():f(f1){} }; }; A::B c;