这个不想编译:

class MainClass
{
public:
    ...

private:
    class NestedClass
    { //Line 39
        ...
    };

    class NestedClass * getNestedClassFor(int i);
};

编译器说:



但是,如果我将NestedClass设置为public,它将可以正常工作。

为什么不起作用?我好像不是通过公共(public)方法导出嵌套类?这只是一个私有(private)方法,它返回一个指向私有(private)类的指针。有任何想法吗?

谢谢!

更新

修复了半列。他们不是问题。都不在NestedClass前面编写class

这是错误消息:



这是.cpp文件中也有提示的部分:
class MainClass::NestedClass * getNestedClassFor(int i) //Line 49
{
    return NULL;
}

最佳答案

忘记在.cpp中添加类范围,即

class MainClass::NestedClass * getNestedClassFor(int i)
{
   //...
}

应该
class MainClass::NestedClass * MainClass::getNestedClassFor(int i)
{
   //...
}

愚蠢的我!

关于c++ - 无法在C++中使私有(private)方法返回指向私有(private)嵌套类的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9015903/

10-10 21:29