加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:00:47 所属栏目:百科 来源:网络整理
导读:这个不想编译: class MainClass{public: ...private: class NestedClass { //Line 39 ... }; class NestedClass * getNestedClassFor(int i);}; 编译器说: error: ‘class MainClass::NestedClass’ is private 但是,如果我公开了NestedClass,它就可以了.
这个不想编译:
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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读