如何把一个类的this指针传给另一个类
怎么把一个类的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);
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);