尽管类继承,变量仍然无法访问?

时间:2013-06-13 01:18:38

标签: c++ class inheritance

我很难理解为什么变量engineNum在类Pickup的函数中无法访问。我的基本理解是,如果继承了类,则应该可以访问私有变量。这不是我发现的情况:

class Truck
{
private:
    string model;
    Truck() {};
    static int TruckEngineNum;
    int engineNum;
public:
    Truck(const string& model) 
    {
        this->model = model;
        engineNum = TruckEngineNum++;
    };

    string getModel() 
    {
        return model;
    }
    int getEngineNum() 
    {
        return engineNum;
    }
};
int Truck::TruckEngineNum = 100;

class Pickup : public Truck
{
public:
    Pickup(const string& model) : Truck(model) 
    {
        if((engineNum % 2) == 1){ engineNum++; };
    }
};

1 个答案:

答案 0 :(得分:4)

派生类无法访问

private个变量。如果您想要访问它,则需要将其声明为protected

此外,如果您计划将其用作多态基类,则您的Truck类应声明virutal析构函数。