我有一种偷偷摸摸的感觉,这可能是编译器造成的问题。
void SetRenderFunction(void (&newRenderFunction(void)));
这导致 GCC 声明我“无法声明对‘void’的引用”
现在,我在 Windows 上的 Visual Studio 下使用了相同的函数原型(prototype)(或多或少)。在 Windows 上,我有一个不同的函数名称,而不是传递一个指向采用 void 的函数的指针,而是传递一个指向我需要的其他对象的指针。
如果我使用 *
而不是 &
它可以防止这个问题,但是当我尝试传入函数指针时,我会遇到类型转换问题:它试图将其从 void (*)()
转换为 void* (*)()
谢谢。
最佳答案
嗯...已经被其他人间接回答了。多亏了 Alf 和 Abyx,我才注意到我做错了什么,但因为他们都或多或少在同一时间发帖,而且他们都没有实际说出哪里出了问题,只是说了做我正在尝试的事情的正确方法是什么,我将对旧的自己回答。
我的函数调用是:
void SetRenderFunction(void (&newRenderFunction(void)));
错的地方在这里 - - - - - - - - - - - - - - - - - - - ^ 和 - ^
我应该在 &newRenderFunction
和这个函数指针的参数周围放一组括号。像这样:
void SetRenderFunction(void (&newRenderFunction)(void));
修复在这里 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ^ - - - - - ^
关于c++ - 引用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4980845/