這是正確的代碼嗎?返回類型不同的函數指針
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標記。
你想完成什麼? – rubenvb
只是得到一個具體問題的答案;) – Jerem