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(单个*父级)后立即工作