これは良い例です:私は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);
}
エラーが、私は、同じファイルのヘッダーファイル内の関数の宣言を置きます。私はまた、宣言との両方が、関数の定義が名前空間宣言の外側に存在することを確認しました(それぞれのファイルの大部分をラップします)。示されているように、最初のエラーの1つは、関数を変数またはフィールド(???)として読み取ります。
エラーメッセージの名前がコードスニペットと一致しません。実際のコードを表示します。 –
最初のエラーは、コンパイラーがコロンのためにビットフィールドまたはその周辺を指定していると考えていたことを示します。残りのエラーは、コンパイラがまだ混乱していたことを示しています。 –