C++ typedef 静态函数指针 : undefined symbol

标签 c++ pointers typedef

//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/

相关文章:

arrays - 特定大小的 C 数组的 Swift 仿真

c - 为什么我们要在 C 语言中如此频繁地定义一个结构体?

c++ - 如何通过迭代器通过指针调用函数?

c - 指针赋值无效

C函数签名问题

c++ - 找出父类型 vector 元素的子类型

C typedef结构的不确定性

c++ - 头文件,前向声明

c++ - 未设置变量并返回异常数字

c++ - 将模板函数分配给 boost::function