1

別のクラスを継承し、基本クラスの関数の値を返す必要があるクラスを作成しています...紛らわしいので、コード自体に話させます...

class ParentClass {
public:
    virtual bool getMyVal();
};

bool ParentClass::getMyVal() {
    return true;   // in my program there is a bit more to it
}

class ChildClass : public ParentClass {
public:
    bool getMyVal();
};

bool ChildClass::getMyVal() {
    CalculateMassOfSun();

    return parent::getMyVal();    // Please make sure you read below...
}

したがって、これは私がやりたいことの単なる例であり、実際のコードではありません。ご覧のとおり、ChildClass::getMyVal() では、基本的に事前計算を行ってから、親クラスで同じ関数を実行し、その値を返す必要があります。私はそれが親の仮想関数であること、そして親の関数を正しい方法で呼び出すことを行っていないことを知っています-それはPHPで行われる方法であり、私が考えることができる唯一の方法はそれが理にかなっていますうまくいけば、現時点では他の人も。

では、どうすればこれを行うことができますか?現時点では、次のようなものを見つけました。

bool ChildClass::getMyVal() : /*ParentClass::*/getMyVal() { ... }

ただし、ここでは値を返しません。

ご回答ありがとうございます。

4

2 に答える 2

6

getMyVal呼び出しの前に基本型名を付けるだけの基本定義を呼び出すには

return ParentClass::getMyVal();
于 2012-05-15T16:24:01.713 に答える
2

ParentClassのバージョンを呼び出したい場合は、次のgetMyVal()ようにします。

bool ChildClass::getMyVal() {
    CalculateMassOfSun();

    return ParentClass::getMyVal(); // this will call parent version
}
于 2012-05-15T16:28:00.473 に答える