В принципе, я просто хочу знать, почему это не работает.
//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'
Я пробовал это в течение часа или около того, но я не смог найти ничего полезного.
Ваше определение Ford
должно быть в файле заголовка (возможно, Ford.h
), который вы #include
в main.cpp
. В противном случае main.cpp
не может видеть, что он даже существует.
Убедитесь, что вы добавили защитные элементы включения в свои заголовки, или вы можете столкнуться с проблемами позже.
Вам также необходимо сделать наследование Car
общественностью:
class Ford : public Car {
class Ford : public Car
.