我有幾個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);'我認爲它更清晰。 –