2011-02-12 146 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));