我寫的東西就像SDL一個按鈕,如果我與它進行交互,可以做一些事情。我想將每個按鈕都存儲在一個容器中(類似於列表或Deque),因此我可以調用它們自己的繪圖函數,並且還可以檢查我點擊的是哪一個。所以,我認爲最簡單的方法是從一個泛型類(「Button」)實例化它們,以便它們都具有位置,顏色等,還有一個函數指針,當我實例化它們時可以設置爲自定義函數。類具有函數指針,可以調用多種類型的功能在不同的實例
我的問題是,當我在類中定義的函數指針,我要聲明的參數列表,但可以有,當我需要一個不同的參數列表(如例:
MyButton button()
button.fooptr=quit; //quit is a void function with no arguments
button.fooptr();
//another case
button.fooptr=print; //print is a void function which takes an SDL_Surface* as an argument.
button.fooptr(screen);
我已經試過來定義函數指針作爲void (*fooptr)(...)
,這奇妙的作品,如果我的函數(...)作爲參數,但如果我嘗試調用函數fooptr(screen)
,功能無法看到屏幕變我傳遞給它有沒有什麼解決方案,能夠傳遞的參數對特定功能的定製量,並通過零函數的參數不帶參數?
這聽起來不太安全。如果你做了'fooptr = print,會發生什麼? fooptr();'? –
'MyButton按鈕()'不會做你認爲它的功能。 –
@LightnessRacesinOrbit什麼,你不認爲Brabulla需要一個名爲'button'的函數來返回'MyButton'的實例?也許Brabulla在每行後都忘了'()';) – Yakk