C++ compiler error involving private inheritance
问题 Could someone please explain the following compiler error to me: struct B { }; template <typename T> struct A : private T { }; struct C : public A<B> { C(A<B>); // ERROR HERE }; The error at the indicated line is: test.cpp:2:1: error: 'struct B B::B' is inaccessible test.cpp:12:7: error: within this context What exactly is inaccessible, and why? 回答1: Try A< ::B> or A<struct B> . Inside of C , unqualified references to B will pick up the so-called injected-class-name , it is brought in through