有没有更好的方法可以从子类访问父类的变量?
Is there a better way to access parent's variables from a child class?
我有以下代码:
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
, 这样我就可以避免在鲍尔的方法中多次使用PhysicalObject::
。
如果我在 Ball
声明它们,我会得到两个不同的变量,例如Ball::mass
和PhysicalObject::mass
,但我希望它们是相同的。
我想过使用指向 Ball 内部 PhysicalObject 变量的指针,所以我得到了更小的变量名称,但我不想再次声明所有变量。
你可以这样做:
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;
但是既然你问了这个问题,我假设你的真实代码不适用于这样的解决方案——也许是因为它使用了具有不同查找规则的模板。
相关文章:
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 如何在C++子类中访问父类的私有变量
- 从模板化父类中的派生内部类访问受保护的成员变量
- 从父类的向量访问子类函数,而无需向下转换
- 将对象强制转换为派生类以访问父类的受保护成员
- 从C++中的父类实例访问子类方法
- 如何在 getter 的父类中初始化变量的情况下访问子类中的变量
- 有没有更好的方法可以从子类访问父类的变量?
- 访问父类变量
- 子类无法访问父类的变量
- C++:从子类访问父类
- 访问父类的成员"Invalid use of non-static data member" C++
- c++:访问父类的成员
- 成员空间可以访问父类的私有成员
- 如何在PIMPL模式下从嵌入类中访问父类方法
- 通过强制转换第一个字段来安全访问父类
- 访问父类中的子成员,c++
- 派生类不能访问父类方法
- 如何访问父类mfc上的变量
- 访问父类对象集合的成员的子类函数