头文件中的类

时间:2010-08-09 09:54:14

标签: c++ function header virtual

我正在使用的C ++程序遇到一些麻烦。我用一个纯虚方法创建了一个抽象类。由于该类没有变量或实现的方法,我将该类存储在没有.cpp实现文件的头文件中(没有任何需要)。

方法是:

virtual void handleEvent() = 0;

问题是当我从该类继承并实现该方法时:

virtual void handleEvent(); (.h file)
void handleEvent(){.....} (.cpp file)

我收到编译错误(使用g ++):

(.rodata._ZtV10Engine[vtable for Engine]+0x8): undefined reference to Engine::handleEvent()

该文件包含在Engine头类中。任何想法为什么这不起作用?

2 个答案:

答案 0 :(得分:11)

我认为您忘记将类限定符放在.cpp实现中。它可能应该是:

void Engine::handleEvent() { ... }

答案 1 :(得分:0)

我会说deus-ex-machina399可能是正确的,但它也可能是你的calling conventions(必须在至少2个不同的.cpp文件之间设置不同的编译器设置)。尝试使用__cdecl__stdcall(或者g ++编译器的正确名称,尝试查看this list

相关问题