私のコードにいくつかの重要なことをするいくつかのvoid関数があります。引数を受け取り、void関数へのポインタを返す関数
void function1(Myclass class1, int myvar)
{
// do some stuff
}
void function2(Myclass class1, int myvar)
{
// do some other stuff
}
// ... maybe some more similar functions
私が渡す引数に応じて、これらの関数のいずれかへのポインタを返す関数を作成します。私はそれをする方法を知らない。
void* choosefunction(int i, int j)
{
if (i == j) return (void*)function1;
else return (void *)function2;
}
私はちょうどこのポインタによってそれらを呼び出すでしょう。
void *(*ptrProcFunc)(int,int);
ptrProcFunc = &choosefunction;
(*ptrr)() = ptrProcFunc(i,j);
ptrr(class1,myvar);
正しく行うにはどうすればよいですか?ありがとうございました。
あなたは、このことを指摘してくれてありがとう正しいです。 –
もう一つのオプションは、ポインタ型宣言を使用しないことです。IMOコードは、ポインタ宣言に '*'があると読みやすくなります –
C++ 11以上が利用可能な場合は、別名形式を前提とします: 'func_ptr = void (Myclass、int); '私はそれがもっと明確だと思う。 –