无法使C中的私有方法返回指向私有嵌套类的指针

前端之家收集整理的这篇文章主要介绍了无法使C中的私有方法返回指向私有嵌套类的指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个不想编译:
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;
}
原文链接:https://www.f2er.com/c/239592.html

猜你在找的C&C++相关文章