嵌套的内类对外类的访问

问题描述 投票:0回答:1
  • 我有一个 嵌套类 需要 操作其外类的数据成员.
  • 我要求外班将 有一个空的构造函数。
  • 以下版本可以正常编译
  • 有什么办法可以避免使用 Outer *o 里面 Inner并使用 Outer o?
class Outer {
private:
    class Inner {
    private: Outer *o;
    public:
        Inner(Outer *outer):o(outer){}
        void visit() { o->d=65; }
    };
private:
    int d;
    Inner v;
public:
    Outer(int m):d(m),v(this){}
};

int main(int argc, char **argv)
{
    Outer out(16);
    return 0;
}
c++ inner-classes default-constructor
1个回答
2
投票

没有,如果你创建一个新的实例,情况会变得循环。你可以不使用指向外类的指针,而是使用一个引用,就像这样。

class Outer {
private:
    class Inner{
    private:
        Outer& o;
    public:
        Inner(Outer& outer) :o(outer) {}
        void visit() { o.d = 65; }
    };
private:
    int d;
    Inner v;
public:
    Outer(int m) :d(m), v(*this) {}
};

int main(int argc, char **argv)
{
    Outer out(16);
    return 0;
}

1
投票

如果我们假设:

  • 类A有一个成员变量 class B b;
  • B类有一个成员变量 class A a;

那么大小的 AB 是无限的。

© www.soinside.com 2019 - 2024. All rights reserved.