假设我在公共(public) header 中有类似的内容:
class MyClass
{
public:
MyClass();
protected:
virtual ~MyClass();
private:
void *pSomeInternalClass;
}
这是我的实现:
MyClass::MyClass()
{
pSomeInteralClass = (void *) new SomeInternalClass();
}
MyClass::~MyClass()
{
SomeInternalClass *pTemp = (SomeInternalClass *) pSomeInternalClass;
delete pTemp;
pSomeInternalClass = NULL;
}
void 指针背后的想法是我不必在公共(public) header 中包含内部类的定义。
我的问题是:我是否以安全的方式处理 void 指针?删除有什么问题吗?
谢谢!
最佳答案
只要将其转换回其原始类型,它就是安全的。
但是您不需要那样做。只需在您的公共(public) header 中转发声明您的内部类型,您不需要执行这种讨厌的转换。
class YourClass {
...
private:
class Internal;
Internal *pInternal;
};
关于c++ - 删除从 C++ 中的 void 强制转换的指针是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9157164/