我尝试编译以下代码,我得到这个错误未定义引用'vtable for Car'
并将Car ctor行标记为false
我在main()中包含“Car.h”和“Road.h”(Road.h已包含Car.h,但Car.h没有)
class Car
{
protected:
std::string name;
public:
Car(std::string name="Ship")
{
std::ostringstream tmp;
std::string temp;
tmp << name << ++id;
name = tmp.str();
}
static int id = 0;
virtual void func(); //redefined in the subclasses Turbo and Tank
virtual void mov(); //redefined in the subclasses Turbo and Tank
};
main()
中的矢量声明#include <iostream>
#include <vector>
#include <string>
#include "Car.h"
#include "Road.h"
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<Car>
Shipyard( 10, Car() );
}
答案 0 :(得分:1)
此错误未定义引用&#39; vtable for&#34;在此处插入ClassName&#34; &#39; 它实际上是一个链接器而不是编译错误
你有没有向我们展示的虚拟功能吗?
如果答案是肯定的,请评论它们,如果错误仍然存在,请重新编译并发表评论。
如果不是那么它与此向量声明无关