【发布时间】:2012-01-26 09:13:30
【问题描述】:
这个不想编译:
class MainClass
{
public:
...
private:
class NestedClass
{ //Line 39
...
};
class NestedClass * getNestedClassFor(int i);
};
编译器说:
错误:'class MainClass::NestedClass' 是私有的
但是,如果我创建了 NestedClass public,它会起作用。
为什么它不起作用?我不是通过公共方法导出嵌套类吗?它只是一个返回指向私有类的指针的私有方法。有什么想法吗?
谢谢!
更新
修复了半列。他们不是问题。也不是在 NestedClass 前面写class。
这是错误信息:
MainClass.h:在函数'MainClass::NestedClass* getNestedClassFor(int i)'中:
MainClass.h:39: 错误:'class MainClass::NestedClass' 是私有的
MainClass.cpp:49:错误:在此上下文中
下面是 .cpp 文件中同样抱怨的部分:
class MainClass::NestedClass * getNestedClassFor(int i) //Line 49
{
return NULL;
}
【问题讨论】:
-
你在哪一行得到错误?还有更多可能相关的错误吗?
-
类定义后缺少分号。
-
这是实际代码吗?缺少两个分号。
-
你为什么把
class放在getNestedClassFor前面? -
如果您将
getNestedClassFor的定义放在标题中,它应该可以工作。您的声明或定义有问题吗?
标签: c++