尝试在基类外创建派生类的实例时出错

时间:2014-02-20 20:56:47

标签: c++ oop

基本上,我只是想知道为什么这不起作用。

//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'

我已经尝试使用谷歌搜索一个小时左右,但我找不到任何有用的东西。

1 个答案:

答案 0 :(得分:1)

您对Ford的定义应位于Ford.h #includemain.cpp的头文件(可能是main.cpp)中。否则Car无法看到它甚至存在。

确保在标题中添加包含保护,否则以后可能会遇到麻烦。

您还需要继承class Ford : public Car { public:

{{1}}