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;
}
答案 0 :(得分:3)
否,如果您创建一个新实例,则情况将是周期性的。但是,您可以使用引用,而不是使用指向外部类的指针:
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 :(得分:1)
如果我们假设:
class B b;
class A a;
然后A
和B
的大小是无限的。