void指针可以在C++中存储class对象的地址吗?

Can void pointer store the address of class object in C++?

我是 C++ 的新手,请告诉我是否可以在 void 指针中存储 class 地址?

没有。 C++ classes 是类型,不是对象。它们在内存中没有任何位置。

(class 中的函数,可能还有 class 的 vtable,确实存在于内存中,但没有一个位置被视为代表 class。)

是的,很简单。

class some_class {
public:
    int Member;
};

void Function() {
    some_class SomeObject;
    void* voidPointer = &SomeObject;
}

不过,为了使用该对象的成员,您需要将指针转换回正确的类型,而这需要强制转换。

voidPointer->Member = 10;    // This line is an error

some_class* SomePointer = static_cast<some_class*>(voidPointer);
SomePointer->Member = 10;