3
我得到了段错误并且可以将代码放到这里;我初始化静态函数指针是具有相同名称的全局函数成员:将静态成员函数指针初始化为具有相同名称的函数
#include <iostream>
class def{
public:
static void (*pt)();
};
void pt()
{
std::cout << "works" << std::endl;
}
void (*def::pt)()=pt;
main(int argc,char* args[])
{
std::cout << "pointer is " << def::pt << std::endl;
def::pt();
}
这给
pointer is 0
Segmentation fault (core dumped)
所以initalization似乎失败。如果我现在将初始化函数的名称更改为其他内容,请说:
[...]
void pt2()
{
std::cout << "works" << std::endl;
}
void (*def::pt)()=pt2;
[...]
这就解决了这个问题。我想知道那里出了什么问题。这是一个范围界定问题吗?在没有宣布def
阴影名来声明
'无效(* DEF :: PT)()= :: PT;'应该工作了。 – Jarod42