common 内のクラスのコンストラクターで、関数のポインターを渡すにはどうすればよいですか? 後で呼び出したい関数の場所を保持する共通クラス内にメンバーを設定するにはどうすればよいですか?
typedef void(*FUNCPTR)(int);
これは私の関数ポインタ型を定義しますが、関数を以下のシグネチャに制限します (void を返し、1 つの int パラメータを取ります)。関数シグネチャに対してこれを定義する必要があります。
void myFunction( int someParam )
{
//DoSomething with someParam
}
class Foo
{
private:
FUNCPTR mFunction; //Holds pointer
public:
Foo( FUNCPTR function) : mFunction(function) {} //Initialise instance
void callFunc() {mFunction(1);} //call function
};
int main(unsigned int argc, const char** argv)
{
Foo myFoo(myFunction);
myFoo.callFunc();
}
operator()
ただし、C++ では、オブジェクトを作成し、正しいパラメーターと戻り値の型を取り、オブジェクトとポリモーフィズムのすべての柔軟性を可能にするオブジェクトを定義する関数オブジェクトを使用することを考えたほうがよいかもしれません....
いくつかの議論と詳細については、C++ ファンクターとその使用法を参照してください。