0

engineNumclass の関数内から変数にアクセスできない理由を理解するのに苦労しています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++; };
    }
};
4

1 に答える 1

4

private変数は派生クラスからアクセスできません。アクセスしたい場合は、 として宣言する必要がありますprotected

また、ポリモーフィックな基底クラスとして使用する場合は、Truckクラスでデストラクタを宣言する必要があります。virutal

于 2013-06-13T01:19:37.277 に答える