【发布时间】:2020-07-25 22:55:22
【问题描述】:
如果我只有一个对象的成员变量的地址,是否可以获得对该对象的引用?
class example{
public:
int var;
};
int main(){
example exampleObject;
int* point=&exampleObject.var;
example* objPointer; // can i get objPointer to point to exampleObject only using point
return 1;
}
【问题讨论】:
-
问:如果不是“地址”,您认为引用是什么?我不知道你的语法......或你的意图。但基本思想是合理的......而且非常像 C ;)
-
不,你不能只使用
point,至少不会陷入一些未定义的行为陷阱 -
我认为不,除非您以特殊方式构造成员 var 以获得指向对象 (this) 的指针,否则您不能这样做。
-
见Using offsetof to get owner object from member variable,Standard way to find base address of struct from a member。也就是说,这不是您通常会做的事情,如果您必须这样做,那么不同的设计可能会更有意义。
-
@Peter 你需要使用
((char*)point)或reinterpret_cast<char*>(point)(point而不是&point)。您需要point指向的地址,而不是point本身的地址。