请考虑以下文件:
p.h:
#ifndef _p_h_ #define _p_h_ class p{ public: static void set_func(int(*)()); private: static int (*sf)(); }; #endif
p.cpp:
#include "p.h" #include <cstdio> int (p::*sf)() = NULL; //defining the function pointer void p::set_func(int(*f)()){ sf = f; }
main.cpp中:
#include "p.h" #include <iostream> int function_x(){ std::cout << "I'm function_x()" << std::endl; return 1234; } int main(){ p::set_func(function_x); }
在编译时,我得到这个:
$g++ -o pp main.cpp p.cpp /tmp/ccIs0M7r.o:p.cpp:(.text+0x7): undefined reference to `p::sf' collect2: ld returned 1 exit status
但:
$g++ -c -o pp p.cpp
编译正确.
代码有什么问题?我只是找不到问题出在哪里,请你的帮助不仅仅是赞赏.
谢谢.