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

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

09-25 19:38