基本上,我只想知道为什么这不起作用。
//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";};
};
我得到两个错误;
error: expected type-specifier before 'Ford'
car1 = new Ford;
^
error: expected ';' before 'Ford'
我已经尝试使用Google搜索一个小时左右,但是我找不到任何有用的东西。
最佳答案
您对Ford
的定义应该在您在Ford.h
中的#include
头文件(也许是main.cpp
)中。否则main.cpp
甚至看不到它的存在。
确保在标头中添加包含防护,否则以后可能会遇到麻烦。
您还需要公开Car
的继承:
class Ford : public Car {