【发布时间】:2014-06-11 01:51:47
【问题描述】:
这更像是在我觉得不应该的情况下发生了一些事情。我不太确定这是否属于本网站的通常权限范围,但我对此很好奇,所以我认为询问不会有什么坏处。
使用 dev-c++ IDE,我正在编写教程中最受欢迎的“制作 ATM 程序”项目之一。其中包含具有所有成员和一组虚函数的基本 Account 类,以及旨在使用特定于这些帐户类型的功能扩展它的 Checking 和 Savings 类。
当我尝试这样实现 Checking.h 时;
#ifndef CHECKING_H
#define CHECKING_H
class Checking : public Account
{
private:
...
它在第 5 行抛出了一个“预期的类名之前的类名”错误(当然,在 Account::* 的每个实例中都有一个“对象未在范围内定义”),直到我包含 Account.h。然而,这个简单的错误花了我一段时间才找到,因为我将该文件与 Savings.h 进行比较,它编译得很好,但似乎不需要相同的包含。上面的代码失败了,但下面的集合在它自己的 Savings.h 中,并且似乎工作正常:
#ifndef SAVINGS_H
#define SAVINGS_H
class Savings : public Account
{
protected:
...
所以,我将所有类作为单独的文件放在一个目录中,并在我的项目中有两个派生类。两者都扩展了同一个基类,都使用了它的成员,扩展了它的一些功能,并直接调用了其他的,但只有一个需要包含基类的.h来编译。任何常见的怀疑为什么会这样?
【问题讨论】:
-
#include基本上是复制粘贴。浏览你的项目并解决它。
标签: c++ inheritance dev-c++