这会保存指向的地址:
size_t this_address = size_t(this);
这可移植吗?我需要保存这个指向的地址。关于是否有正确的方法来解决这个问题的任何建议。请注意,出于优化目的。
答案 0 :(得分:6)
void *
更便携,在我看来,更正确的方式来存储指针地址:
void *this_address = this;
这就是说,为什么你需要这个便携式?它根本不是类型安全的,您应该使用指向正确(基础)类型的指针,或者在适用的情况下,使用指向(基础)类型的智能指针。
答案 1 :(得分:5)
你可以简单地说:
MyClass* foo = this;
根本不需要任何演员。
答案 2 :(得分:4)
我认为以下应该是存储地址的方法
const void* address = static_cast<const void*>(this);
答案 3 :(得分:1)
如果您需要一些自动内存管理(例如所有权管理和引用计数),您可以使用shared_ptr<MyClass>
存储指向对象的指针,其中MyClass
是类的类型。