【发布时间】:2014-09-06 12:06:13
【问题描述】:
在 C++ 中删除这样的对象有什么问题吗?
MyCls* c = new MyCls();
void* p = (void*)c;
delete (MyCls*)p;
【问题讨论】:
-
将指针转换为
void *,然后返回其原始类型可以保证保留其值。 -
§5.2.9/13 “对象指针类型的值转换为“指向 cv void 的指针”并返回,可能具有不同的 cv 限定,应具有其原始值。”
-
你为什么要这样做?
-
@Jack Aidley,因为我想在C中使用一个C++类,所以必须使用void指针。
-
我认为您可能应该发布一个更详细的问题,概述您在做什么以及为什么,因为我强烈怀疑如果您这样做的方式不太理想就是这样。
标签: c++ pointers void delete-operator