【发布时间】:2014-05-12 00:10:54
【问题描述】:
这是正确的代码吗?
class SomeClass;
SomeClass* createSomeClass(); // just returns new SomeClass
void* (*createFuncPtr)();
int main()
{
createFuncPtr= (void* (*)()) &createSomeClass;
SomeClass* instance = (SomeClass*)createFuncPtr();
}
C 标准说:
768 如果转换后的指针用于调用类型为 与指向的类型不兼容,行为未定义。
在这种情况下,函数类型是否兼容?或者如果我想避免蚂蚁的麻烦,我是否必须在调用它之前重新转换函数指针?
SomeClass* instance = ((SomeClass* (*)())createFuncPtr)();
谢谢!
编辑:是的,它包含 C++ 代码,但如果它只是 C,我的问题仍然有效,请留下 C 标记。
【问题讨论】:
-
你想要完成什么?
-
刚刚得到该特定问题的答案;)