C++ C++;编译时对vtable的未定义引用

C++ C++;编译时对vtable的未定义引用,c++,compiler-errors,C++,Compiler Errors,为什么我总是在用这段代码编译时出错 #ifndef OPERATOR_H #define OPERATOR_H #include <cstdlib> #include <iostream> #include <string> #include "Individual.h" using namespace std; class Operator { public: Operator(); virtual void execute (Individual*

为什么我总是在用这段代码编译时出错

#ifndef OPERATOR_H
#define OPERATOR_H
#include <cstdlib>
#include <iostream>
#include <string>
#include "Individual.h"

using namespace std;

class Operator
{
public:
Operator();

virtual void execute (Individual* parent);

private:

};
#endif
#ifndef操作符
#定义运算符
#包括
#包括
#包括
#包括“个人.h”
使用名称空间std;
类运算符
{
公众:
运算符();
虚拟作废执行(单个*父级);
私人:
};
#恩迪夫
然后在cpp文件中我有

#include <cstdlib>
#include <iostream>
#include <string>
#include "Operator.h"

using namespace std;

Operator::Operator()
{  

}

void execute(Individual* parent)
{    

}
#包括
#包括
#包括
#包括“Operator.h”
使用名称空间std;
运算符::运算符()
{  
}
无效执行(单个*父级)
{    
}

定义析构函数。具有虚拟方法的类的vtable是在定义构造函数的转换单元中创建的

在标题中,添加:

virtual ~Operator();
并在源文件中添加:

Operator::~Operator() {
}

请提供更多关于错误的详细信息,
Individual.h
中的内容,并尽量避免在头文件中包含报告的错误以及在哪一行代码上?废话,刚刚意识到我需要在execute函数前面使用Operator::是的,由于睡眠不足而犯了愚蠢的错误。更改CPP文件void运算符::execute(单个*父级)后立即工作