64,702
社区成员
发帖
与我相关
我的任务
分享
/*
//目标
class outclass
{
public:
int m_i;
class inclass
{
public:
//通过in的set_i操作修改外部类的m_i变量
void set_i(int i)
{
::m_i = i;
}
}in;
};
*/
class outclass_1
{
public:
int m_i;
class inclass
{
public:
void set_i(int i)
{
outclass_1 *parent = (outclass_1 *) (this - &((outclass_1 *)(0))->in);
parent->m_i = i;
}
}in;
};
class outclass_2
{
public:
int m_i;
outclass_2():in(this)
{
}
class inclass
{
public:
outclass_2 *m_parent;
inclass(outclass_2 *parent):m_parent(parent)
{
}
void set_i(int i)
{
m_parent->m_i = i;
}
}in;
};
class outclass_3
{
public:
int m_i;
outclass_3()
{
in.m_parent = (outclass_3 *) this;
}
class inclass
{
public:
outclass_3 *m_parent;
void set_i(int i)
{
m_parent->m_i = i;
}
}in;
};
int main()
{
outclass_1 out_1;
out_1.in.set_i(123);
cout << out_1.m_i << endl;
outclass_2 out_2;
out_2.in.set_i(123);
cout << out_2.m_i << endl;
outclass_3 out_3;
out_3.in.set_i(123);
cout << out_3.m_i << endl;
return 0;
}
class A
{
A(int n) : mem(n)
{
pb = new B(this);
}
private:
...
B* pb;
}
class A
{
public:
A(int n) : mem(n), b(this) {}
void SetMember(int n);
...
private:
int mem;
class B
{
public:
B(A* p) : parent(p){}
void SetParentMember(int n)
{
parent->SetMember(n);
}
private:
A* parent;
};
B b;
};