私のクラスの関数へのプライベート静的ポインタを持っていたいと思います。基本的には、次のようになります。関数へのC++静的ポインタ
//file.h
class X {
private:
static int (*staticFunc)(const X&);
...
public:
void f();
};
//file.cpp
void X::f()
{
staticFunc(*this);
}
これは私に「解決されていない外部記号」エラーを与えます。
int (X::*staticFunc)(const X&) = NULL;
をしかし、これは私に、「機能の初期化」エラーを与える:私は、静的メンバーがあまりにも.cppファイルに初期化されなければならないことを知って、私はこれを試してみました。私はそれを既存の関数で初期化しようとすると、醜いエラーが出る。 "= NULL"を指定しないと、同じエラーが発生します。
ありがとうございました。
.cppファイルで 'staticFunc = NULL;'を試しましたか? (注:.cppファイルの型を再宣言しなければならないかどうかは分かりません) –
申し訳ありませんが、実行時にコードを書きました。私はそれを修正しました。もちろん、staticFuncにパラメータを渡していました。そして私は実際に "int(* X :: staticFunc)(const X&)"の代わりに.cppファイル "int(X :: * staticFunc)(const X&)"を書いていました。あなたの答えをありがとう、それは愚かな間違いでした。 – stonecup64