假如有一个类如下:
class Base{
private:
static void (*func)(int a,int b);
static void set(int a,int b);
}
我要怎么初始化这个指针,让他指向static的set函数
假如有一个类如下:
class Base{
private:
static void (*func)(int a,int b);
static void set(int a,int b);
}
我要怎么初始化这个指针,让他指向static的set函数
void (*Base::func)(int, int) = &foo;
"&foo"可以替换为你想要的函数指针。
简单结论:static的初始化,需要在类外完成,写在定义文件(不是声明!)中,也就是写在.cpp/.cc文件而非.h/.hh/.hpp文件中。只要在声明的基础上,在变量名前加上“类名::”就可以,你的例子中,声明的变量名为func,类名是Base,直接复制func声明后把func改成Base::func就可以。
特殊地,在现代C++,constexpr static可以直接在声明上初始化:
// 类内
constexpr static int x = 10;
// 不是常量的话不能这么写