C ++静态指向函数的指针

时间:2010-11-30 18:14:51

标签: c++ function pointers static

我想在我的类中有一个私有静态指针。基本上,它看起来像这样:

//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”,我得到同样的错误。

感谢。

3 个答案:

答案 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得到那个。