【发布时间】:2012-03-13 11:26:06
【问题描述】:
文件 A.h
#ifndef A_H_
#define A_H_
class A {
public:
virtual ~A();
virtual void doWork();
};
#endif
文件 Child.h
#ifndef CHILD_H_
#define CHILD_H_
#include "A.h"
class Child: public A {
private:
int x,y;
public:
Child();
~Child();
void doWork();
};
#endif
和 Child.cpp
#include "Child.h"
Child::Child(){
x = 5;
}
Child::~Child(){...}
void Child::doWork(){...};
编译器说A 有一个未定义的vtable 引用。
我尝试了很多不同的方法,但都没有奏效。
我的目标是让A 类成为一个接口,并将实现代码与标头分开。
【问题讨论】:
-
你必须定义你声明的每一个非纯虚函数。您不需要定义您声明但不使用的非虚拟函数。
标签: c++ inheritance vtable