如果您对函数指针的确切语法感到困惑,那么最好定义一个类型别名。
如果你使用
using
<return type> (*)(<parameter types>)
class Alpha{
public:
using FunctionPtr = void (*)(int, int);
Alpha(FunctionPtr p = nullptr) : calculatePointer(p) {}
FunctionPtr calculatePointer;
void test()
{
if (calculatePointer != nullptr)
{
calculatePointer(5, 10);
}
}
};
void calculate(int a, int b){
std::cout << "sum: " << (a + b) << "\n";
}
顺便说一句:没有类型别名的正确语法是
Alpha(void (*p)(int, int) = nullptr);
void *p(int, int)
作为
(void*) p(int, int)
.