Я попытался скомпилировать следующий код, и я получаю эту ошибку с неопределенной ссылкой на "vtable for Car"
И отмечает линию Car ctor как ложную
Я включаю "Car.h" и "Road.h" в main() (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
};
Векторная декларация в основном()
#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() );
}
Эта ошибка неопределенной ссылки на "vtable for" вставляет здесь ClassName "'на самом деле это компоновщик, а не компиляционная ошибка
Есть ли у вас какие-либо виртуальные функции, которые вы нам не показываете?
Если да, ответьте, перекомпилируйте и прокомментируйте, если ошибка сохраняется.
Если нет, то это не связано с этой векторной декларацией