保存'这个'地址变量

时间:2013-08-12 19:04:20

标签: c++

这会保存指向的地址:

size_t this_address = size_t(this);

这可移植吗?我需要保存这个指向的地址。关于是否有正确的方法来解决这个问题的任何建议。请注意,出于优化目的。

4 个答案:

答案 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是类的类型。