2011-02-12 72 views
1

我有一种偷偷摸摸的感觉,这可能是一个问题,由于编译器。参考无效

void SetRenderFunction(void (&newRenderFunction(void)));

这导致GCC宣布我“不能声明提及‘无效’”

现在,我已经使用了相同的函数原型(或多或少)的Visual Studio在Windows下。在Windows上,我有一个不同的函数名称,而不是传递一个指向void的函数的指针,它需要一个指向我需要的其他对象的指针。

如果我使用*而不是&它可以防止这个问题,而是当我尝试在函数指针传递,我得到的类型转换问题:它试图从void (*)()投它void* (*)()

感谢。

+0

[C++如何创建一个函数作为参数引用函数指针?](http://stackoverflow.com/questions/4684576/c-how-to-create -a-function-which-take-as-argument-a-reference-to-a-function-po) – 2011-02-12 21:58:00

回答

6

嗯......它已经间接受到其他人的回答。感谢Alf和Abyx,我注意到我做错了什么,但是因为他们都或多或少地同时发布了,他们都没有明确表示刚才说错了什么是做正在尝试的正确方法,我会向老自我回答。

我的函数调用:

void SetRenderFunction(void (&newRenderFunction(void)));

错了位就在这里 - - - - - - - - - - - - - - - - - - - - - ^和 -^

我应该在&newRenderFunction和这个函数指针的参数中加上一组括号。像这样:

void SetRenderFunction(void (&newRenderFunction)(void));

的解决方法是在这里 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -^- - - - -^

3

无法编译Comeau Online。埃尔戈,它’错了。

你可以......…

void setRenderFunction(void (&newRenderFunction)()); 

…但是更好的是......

…因为指针符号是比较知名的,也可与C.

干杯&心连心,

+1

erm ...不想在这里听起来像一个小狗屎,但我知道这是错的,我是更多了解如何解决它 – thecoshman 2011-02-12 21:58:08

+0

@thecoshman:好的,增加了一些例子。 – 2011-02-12 21:59:43

2
void SetRenderFunction(void (*newRenderFunction)(void)); 
void SetRenderFunction(void (&newRenderFunction)(void));