Klassentemplates und private
-
class A { private: template<typename T> struct Internal {}; }; template<typename T> class B { public: typedef A::Internal<T> Internal; }; void f() { A::Internal<int> x; // Fehler B<int>::Internal y; // Ok --- warum? }Meine Frage: warum akzeptiert der Compiler die Definition von y? Letzlich tut sie doch das gleiche wie die vorangehende Zeile, d.h. x und y hätten den gleichen Typ, oder?
-
Was hast du für einen Compiler? - Bei mir (MSVC++) kompiliert das korrekterweise nicht.
void f() { //A::Internal<int> x; // Fehler B<int>::Internal y; // Ok --- warum?error C2248: 'A::Internal<T>' : cannot access private struct declared in class 'A'
-
drakon schrieb:
Was hast du für einen Compiler? - Bei mir (MSVC++) kompiliert das korrekterweise nicht.
...Ich verwende GCC (4.4 und 4.3)