继承基类时遇到问题

Having troubles inheriting base class

本文关键字:问题 遇到 基类 继承      更新时间:2023-10-16

当我继承基类时,它告诉我没有这样的类

这是增强的。

  class enhanced: public changeDispenser // <--------where error is occuring
    {
    public:
        void changeStatus();
        // Function: Lets the user know how much of each coin is in the machine
        enhanced(int);
        // Constructor
        // Sets the Dollar amount to what the User wants
        void changeLoad(int);
        // Function: Loads what change the user requests into the Coin Machine
        int dispenseChange(int);
        // Function: Takes the users amount of cents requests and dispenses it to the user
    private:
        int dollar;
    };

这是增强的.cpp:

#include "enhanced.h"
#include <iostream>
using namespace std;
enhanced::enhanced(int dol)
{
    dollar = dol;
}
void enhanced::changeStatus()
{
    cout << dollar << " dollars, ";
    changeDispenser::changeStatus();
}
void enhanced::changeLoad(int d)
{
    dollar = dollar + d;
    //changeDispenser::changeLoad;
}

这是changeDispenser.h:

class changeDispenser
{
public:
    void changeStatus();
    // Function: Lets the user know how much of each coin is in the machine
    changeDispenser(int, int, int, int);
    // Constructor
    // Sets the Quarters, Dimes, Nickels, and Pennies to what the User wants
    void changeLoad(int, int, int, int);
    // Function: Loads what change the user requests into the Coin Machine
    int dispenseChange(int);
    // Function: Takes the users amount of cents requests and dispenses it to the user
private:
    int quarter;
    int dime;
    int nickel;
    int penny;
};

我没有包括驱动程序文件或 changeDispenser imp 文件,但在驱动程序中,这些都包含在

#include "changeDispenser.h"
#include "enhanced.h"

首先,您需要将类changeDispenser的标头放在单独的头文件中,并将其包含在派生类标头中。

changeDispenser没有默认的非参数构造函数,因此需要在派生类中显式初始化它。 大致如下:

enhanced::enhanced(int dol) : changeDispenser(0, 0, 0, 0)
{
    dollar = dol;
}

或者,您可以为构造函数参数定义默认值,出于样式原因,这不太可取。

changeDispenser(int i=0, int j=0, int k=0, int l=0);

如果您发布的源代码正确显示了构成这组类的三个文件(enhanced.h,enhanced.cpp(?),changeDispencer.h),那么您应该添加

#include "changeDispenser.h"

到"enhanced.h"的顶部,以始终确保当代码的某些部分包含enhanced的定义(来自"enhanced.h")时,changeDispenser的定义可用。若要对类进行子类,基类的完整定义必须始终可用。