【发布时间】:2018-07-25 18:02:21
【问题描述】:
我有一个名为 A 的类,其定义如下:
class A {
public:
int time;
A *next;
someFunc();
A();
virtual ~A();
};
我有一个 A 的子类,称为 B,其定义如下:
#include "A.h"
class B : public A {
public:
int state;
Foo *ID;
someFunc();
B(int time, A *next, int state, Foo *id);
virtual ~B();
};
B的构造函数定义为:
B::B(int time, A *next, int state, Foo *id) : time(time), next(next), state(state), ID(id) { }
当我构建程序时,我收到一个错误,即 B 类没有名为“time”或“next”的字段。我确保我在 B.h 文件和 B.cpp 文件中都包含了 A.h,但它似乎没有什么不同。值得注意的是,B 类中的 someFunc() 被识别。我在 B.cpp 中定义了一个与 A 类版本不同的主体。在 B.h 的声明中,Eclipse 有一个标记提醒我它“阴影”A::someFunc(),所以我知道 B 至少继承了那个。
我正在 Eclipse 中开发这个程序并使用 makefile 来构建它。我构建 B.o 的路线是:
B.o: B.cpp B.h
g++ -c -Wall -g B.cpp
我也尝试在第一行末尾添加 A.h,但没有任何作用。我是否遗漏了可能导致此错误的内容?
【问题讨论】:
标签: c++ class inheritance makefile subclass