链接时报出父类有有关问题,是为什么
链接时报出父类有问题,是为什么?
现象如下:
g++ -O0 -I../include device.cpp input.cpp msg.cpp nav_view.cpp view.cpp main.cpp -o main -lpthread
/tmp/ccLKWMbM.o:在函数‘view::view()’中:
nav_view.cpp:(.text._ZN4viewC2Ev[_ZN4viewC5Ev]+0x8):对‘vtable for view’未定义的引用
/tmp/ccLKWMbM.o:(.rodata._ZTI8nav_view[_ZTI8nav_view]+0x8):对‘typeinfo for view’未定义的引用
collect2: 错误: ld 返回 1
make: *** [all] 错误 1
nav_view.cpp是view.cpp的子类,view.cpp中没有任何方法,只有一句#include <view.h>
view.h内容如下:
using namespace std;
class view{
public:
int top;
int left;
int right;
int bottom;
bool enable;
virtual int key_down_proc(enum SYSTEM_MSG m);
virtual int show();
virtual int hide();
};
nav_view中重写了这几个虚拟方法,请问那儿有问题呢????????????????????????
------解决方案--------------------
父类的cpp中至少需要实现以下几个函数:
virtual int key_down_proc(enum SYSTEM_MSG m);
virtual int show();
virtual int hide();
现象如下:
g++ -O0 -I../include device.cpp input.cpp msg.cpp nav_view.cpp view.cpp main.cpp -o main -lpthread
/tmp/ccLKWMbM.o:在函数‘view::view()’中:
nav_view.cpp:(.text._ZN4viewC2Ev[_ZN4viewC5Ev]+0x8):对‘vtable for view’未定义的引用
/tmp/ccLKWMbM.o:(.rodata._ZTI8nav_view[_ZTI8nav_view]+0x8):对‘typeinfo for view’未定义的引用
collect2: 错误: ld 返回 1
make: *** [all] 错误 1
nav_view.cpp是view.cpp的子类,view.cpp中没有任何方法,只有一句#include <view.h>
view.h内容如下:
using namespace std;
class view{
public:
int top;
int left;
int right;
int bottom;
bool enable;
virtual int key_down_proc(enum SYSTEM_MSG m);
virtual int show();
virtual int hide();
};
nav_view中重写了这几个虚拟方法,请问那儿有问题呢????????????????????????
------解决方案--------------------
父类的cpp中至少需要实现以下几个函数:
virtual int key_down_proc(enum SYSTEM_MSG m);
virtual int show();
virtual int hide();