基本上,我只是想知道为什么这不起作用。
//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'
我已经尝试使用谷歌搜索一个小时左右,但我找不到任何有用的东西。
答案 0 :(得分:1)
您对Ford
的定义应位于Ford.h
#include
中main.cpp
的头文件(可能是main.cpp
)中。否则Car
无法看到它甚至存在。
确保在标题中添加包含保护,否则以后可能会遇到麻烦。
您还需要继承class Ford : public Car {
public:
{{1}}