私は次のコードを持っている:子クラスから親の変数にアクセスするより良い方法はありますか?
class PhysicalObject {
public:
double x, y, mass, airrescons, volume;
bool grav, airres, buoy;
Vector2d velocity;
// ...
// Here I define some physics methods
// ...
}
class Ball : public PhysicalObject {
double radius;
public:
Ball() {
PhysicalObject::x = 0;
PhysicalObject::y = 0;
radius = 1;
PhysicalObject::mass = 1;
PhysicalObject::grav = true;
PhysicalObject::airres = true;
PhysicalObject::buoy = true;
PhysicalObject::airrescons = circcons*airden*PI*radius/mass;
PhysicalObject::volume = PI*radius*radius;
PhysicalObject::velocity = Vector2d();
};
// ...
// More physics methods defined here
// ...
}
私はそれがそれらを使用する一般的な方法と子供のクラスを持っているので、PhysicalObject
クラスでこれらの変数を維持したいので、にこれらの変数をインポートする方法がある場合、私は疑問を例えばBall
のような子クラスで、Ballのスコープで変数mass
を使用するたびに、PhysicalObject::mass
を参照しているので、Ballのメソッド全体でPhysicalObject::
を何回か使用することは避けてください。
私がそれらをBall
に宣言すれば、例えばBall::mass
とPhysicalObject::mass
という2つの異なる変数が得られますが、それらを同じにします。
私は、Ball内のPhysicalObjectの変数を指すポインタを使用することを考えました。したがって、より小さな変数名が得られますが、すべての変数を再度宣言したくありません。
実際には何か不思議なことが起こりました。私が質問をする前に、あなたが提案した最後のオプションを試してみましたが、コンパイラはBallクラスにxまたはyという名前の変数がないと言っていたので、うまくいきませんでした。今私は再びそれを試して、それはうまくいった。助けてくれてありがとう:D – JGabriel