Ошибка при попытке создать экземпляр производного класса вне базового класса

0

В принципе, я просто хочу знать, почему это не работает.

//main.cpp

#include "testHeader.h"
int main(int argc,char** argv)
{
    Car *car1;
    car1 = new Ford;
    car1->foo();
    return 0;
}


//testHeader.h

class Car {
    public:
        Car();
        virtual void foo();
};

//Ford.cpp

#include "testHeader.h"
#include <iostream>

class Ford : Car {
    public:
        Ford();
        void Foo() { std::cout << "I am a Ford";};
};

Я получаю 2 ошибки;

error: expected type-specifier before 'Ford'
      car1 = new Ford;
                 ^
error: expected ';' before 'Ford'

Я пробовал это в течение часа или около того, но я не смог найти ничего полезного.

Теги:
oop

1 ответ

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

Ваше определение Ford должно быть в файле заголовка (возможно, Ford.h), который вы #include в main.cpp. В противном случае main.cpp не может видеть, что он даже существует.

Убедитесь, что вы добавили защитные элементы включения в свои заголовки, или вы можете столкнуться с проблемами позже.

Вам также необходимо сделать наследование Car общественностью:

class Ford : public Car {
  • 0
    Таким образом, заголовочный файл Ford будет точно таким же, как файл «testHeader.h», за исключением того, что в нем не будет «виртуальных» ключевых слов, а название класса будет «Ford: Car»?
  • 0
    @PointToPoint Да. Впрочем, я просто заметил: тебе нужно публичное наследство. Так и должно быть class Ford : public Car .

Ещё вопросы

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