使用Car()对象声明向量会打印无关的错误

时间:2014-11-15 17:48:36

标签: c++

我尝试编译以下代码,我得到这个错误未定义引用'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() );

}

1 个答案:

答案 0 :(得分:1)

此错误未定义引用&#39; vtable for&#34;在此处插入ClassName&#34; &#39; 它实际上是一个链接器而不是编译错误
你有没有向我们展示的虚拟功能吗?
如果答案是肯定的,请评论它们,如果错误仍然存​​在,请重新编译并发表评论。
如果不是那么它与此向量声明无关