//class.h
typedef double (*ffunct)(double x1, double y1, double x2, double y2);
class Class {
public:
static ffunct myfunct;
static void setFunct();
static double doSomething(double x1, double y1, double x2, double y2);
static void call();
}
//class.cpp
void Class::setFunct(){
Class::myfunct=Class::doSomething;
}
double Class::doSomething(double x1, double y1, double x2, double y2) {
cout << "Hello World" << endl;
}
void Class::call() {
Class::myfunct(1.0,2.0,3.0,4.0);
}
//main.cpp
…
Class::setFunct();
Class::call();
…
运行程序导致 Undefined symbols for architecture x86_64: "Class::myfunct", referenced from Class::setFunct, Class::call ...
那我做错了什么?
最佳答案
在你的cpp文件中你还需要一行:
ffunct Class::myfunct = NULL;
类声明说变量将存在于某处,但您从未给它定义。由于它不是每个对象的一部分,因此必须单独定义。
关于C++ typedef 静态函数指针 : undefined symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16472631/