下面是一個很好的例子:我試圖重載OpenGL的glutMouseFunc
,以便它可以接受我選擇的命名空間和類函數。其中特別的是Init::DisplayInit::mouse
,它是靜態的。問題是,這可能嗎?如果是這樣,這是如何實現的?函數可以接受靜態函數指針作爲參數嗎?
我實現從執行
..\OpenGL_03\/displayinit.h:27: error: variable or field 'glutMouseFunc' declared void
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: void value not ignored as it ought to be
注意
void glutMouseFunc(void (Init::DisplayInit::*mouse)(int, int, int, int)) {
(*mouse);
}
錯誤,我把函數的聲明在同一個文件的頭文件。我還確保聲明和函數的定義駐留在名稱空間聲明之外(這兩個文件都包含大部分文件)。如圖所示,第一個錯誤之一讀取函數作爲變量或字段(???)。
錯誤消息中的名稱與代碼片段不匹配。顯示實際的代碼。 – 2011-12-30 02:25:23
第一個錯誤表明編譯器認爲你是由於冒號而指定了一個位域或附近;其餘的錯誤表明編譯器仍然感到困惑。 – 2011-12-30 02:27:25