Объявление вектора с объектами Car () печатает несвязанную ошибку

0

Я попытался скомпилировать следующий код, и я получаю эту ошибку с неопределенной ссылкой на "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() );

}
  • 2
    Это, безусловно, актуально. Если вы хотите помочь с вашим кодом, вам нужно опубликовать все это.
  • 1
    @Curufindul Это, конечно, не имеет значения. Если вам нужна помощь, вам нужно показать все это. Мы не против читателей?
Теги:

1 ответ

1
Лучший ответ

Эта ошибка неопределенной ссылки на "vtable for" вставляет здесь ClassName "'на самом деле это компоновщик, а не компиляционная ошибка
Есть ли у вас какие-либо виртуальные функции, которые вы нам не показываете?
Если да, ответьте, перекомпилируйте и прокомментируйте, если ошибка сохраняется.
Если нет, то это не связано с этой векторной декларацией

  • 1
    хорошо, нашел это, это были виртуальные функции, которые были в Car.h

Ещё вопросы

Сообщество Overcoder
Наверх
Меню