我有一个偷偷摸摸的感觉,这可能是由于编译器引起的。void SetRenderFunction(void (&newRenderFunction(void)));
这导致GCC宣布我“无法声明对“无效”的引用”
现在,我已经在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/