c++的成员类对象如何得到父对象的指针
class CA{
public:
CB b;
};
(CB为另一个类)
不初始化传入CA的指针,成员对象b如何得到运行时CA的指针? 加参数不就可以了 没有办法知道 这里没有继承关系,只是聚合,哪有什么父对象? 单独存在的一个CB类对象,跟CA没有必然的关系。 也就是说CA类中有一个CB(has-a relationship), 但并不是所有的CB都属于某个CA.所以你的问题,描述不清楚,不知你想问什么,或实现什么功能。
用偏移量减?不过这根本不是办法。 可以算偏移得到
CA里面一定有个CB
但是CB不一定是CA的一部分 4楼说的对,没描述清楚。我觉得楼主是想问:B类对象怎么得到父类成员的指针。 C语言里的struct结构体,可以用偏移量来减去成员地址得到外套结构体对象地址;但是C++没有这方面的规范,可以如此也可以不如此,所以最好别模仿C的方式做,否则编译器之间的移植性不能保证了! 不太明白楼主的意图。如果在CA类内部,b可以直接使用this指针。 linux源码是C语言开发的,它大量的使用了container_of()宏,就是利用了这个方法:
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
页:
[1]