我有以下代码:
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
类,因为它有泛型方法和使用它们的子类,我想知道是否有办法将这些变量导入子类,如{{1并且,告诉程序,例如,每次我在Ball的范围内使用变量Ball
时我都在引用mass
,这样我就避免在整个过程中多次使用PhysicalObject::mass
Ball的方法。
如果我在PhysicalObject::
声明它们,我会得到两个不同的变量,例如Ball
和Ball::mass
,但我希望它们是相同的。
我想过使用指向Ball内部的PhysicalObject变量的指针,所以我得到较小的变量名,但我不想再次声明所有变量。
答案 0 :(得分:0)
你可以这样做:
class Ball : public PhysicalObject {
public:
Ball() {
this->x = 0;
this->y = 0;
或者这个:
class Ball : public PhysicalObject {
public:
using PhysicalObject::x;
using PhysicalObject::y;
Ball() {
x = 0;
y = 0;
在您发布的具体示例中,如果不涉及模板,您甚至不需要执行using
:
class Ball : public PhysicalObject {
public:
Ball() {
x = 0;
y = 0;
但是,既然你问了这个问题,我认为你的真实代码并没有使用这样的解决方案 - 也许是因为它使用了具有不同查找规则的模板。