use*_*643 -1 c++ libstdc++ c++11
我正在致力于将 C++ 库包装到 C 桥中。
\n\n所有对象,我\xe2\x80\x99d 喜欢在堆上使用shared_ptrs 进行维护,例如:
\n\nvoid* makeFoo() {\n return new shared_ptr<void>(shared_ptr::make_shared<Foo>());\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我可以使用这样的通用销毁吗:
\n\nvoid destroy(void* p) {\n delete static_cast<shared_ptr<void>*> p;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n或者有更干净的方法吗?
\n参数的类型必须delete与您要删除的内容的实际类型匹配(例如,否则如何调用正确的析构函数?),或者至少是多态层次结构中的基类型,以便可以找到析构函数几乎 ([expr.delete]/3)。
所以,不,你不能那样做。