读书人

如何把一个类的this指针传给另一个类

发布时间: 2012-01-13 22:43:29 作者: rapoo

怎么把一个类的this指针传给另一个类
A类的一个实例已经生成了,B类的一个实例也 已经生成了。A类实例的指向B类的成员变量b还没有值。B类在它自己的一个函数中,需要把指向B类自己的指针传给A类的b成员。也就是A类需要一个具体的B的指针,B也必须把它自己的指针传给这个具体的A,两者都要互相知道对方的存在。
也就是说:
class A
{
B *b;
}

在B类的一个函数中,想要把B自己的this指针,通过
B *pthisNode=(B *)this; 得到,想把pthisNode指针给A的b,该怎么沟通呢?

[解决办法]
写一个函数
return this;即可
[解决办法]
不建议直接传递,可通过函数进行传递。。。

要看你的B类在什么时候构造的。如果在A类中构造那么就简单了,可以直接利用B类函数获取

如果是其他类。那么就要通过中间传递,全局变量或者获取B类对象的构造指针。
[解决办法]
纠正一点,类是没有什么this指针概念的,那是对象的this指针

传递可以通过全局、静态或构造函数来完成。

不过这种设计有问题,很容易产生菱形对象结构
[解决办法]
class A
{
public:

void SetB(B* _b) { b = _b;}

private:
B* b
};

class B
{
public:
SetThisToA(A* a)
{
a-> SetB(this);
}

};

A a;
B b;

b.SetThisToA(&a);

读书人网 >VC/MFC

热点推荐