这个不想编译:
class MainClass { public: ... private: class NestedClass { //Line 39 ... }; class NestedClass * getNestedClassFor(int i); };
编译器说:
error: ‘class MainClass::NestedClass’ is private
但是,如果我公开了NestedClass,它就可以了.
为什么不起作用?这不是我通过公共方法导出嵌套类?它只是一个返回指向私有类的指针的私有方法.有任何想法吗?
谢谢!
更新
修复了半列.他们不是问题.也没有在NestedClass面前编写类.
这是错误消息:
MainClass.h: In function ‘MainClass::NestedClass* getNestedClassFor(int i)’:
MainClass.h:39: error: ‘class MainClass::NestedClass’ is private
MainClass.cpp:49: error: within this context
这是.cpp文件的一部分,也是抱怨:
class MainClass::NestedClass * getNestedClassFor(int i) //Line 49 { return NULL; }
解决方法
这编译并正常工作:
class A { private: class B { public: B() {}; }; B *b; B *getB(); public: A(); }; A::A() { b = getB(); } A::B* A::getB() { A::B *tmp = new A::B(); return tmp; } int main() { A a; return 0; }