我想在我的类中有一个私有静态指针。基本上,它看起来像这样:
//file.h
class X {
private:
static int (*staticFunc)(const X&);
...
public:
void f();
};
//file.cpp
void X::f()
{
staticFunc(*this);
}
这给了我一个“未解决的外部符号”错误。我知道静态成员也必须在.cpp中初始化,我试过这个:
int (X::*staticFunc)(const X&) = NULL;
但是这给了我一个“初始化函数”的错误。如果我尝试使用现有函数初始化它,它会给我一个更大的错误。没有“= NULL”,我得到同样的错误。
感谢。
答案 0 :(得分:4)
//file.cpp
int (*X::staticFunc)(const X&);
void X::f()
{
staticFunc(*this);
}
答案 1 :(得分:2)
它是X的成员,所以你需要说
int (*X::staticFunc)(const X&) = NULL;
否则,您只需创建一个名为staticFunc
的全局变量,该变量与X的静态成员无关。
答案 2 :(得分:0)
在这里遇到问题。
第一个错误是您在尝试使用staticFunc时没有传递参数。这应该会导致您没有报告的编译器错误。
第二个问题是您的语法错误。 TonyK得到那个。