我正在尝试在 C++ 中创建一个类来存储许多参数的值,这些参数被组织为类“Planet”和类“Satellite”的成员变量,我想通过对实例的引用来初始化它们'行星'。在这里,我提供了一个示例,其中我有一个“PlanetCatalog”类 成员变量 'Planet neptune' 和一个 'Satellite triton'。
class Planet {
public:
double a;
Planet() {}
void setParams( const double a_) {
a = a_;
}
};
class Satellite {
public:
double b;
Planet & planet;
Satellite( Planet & planet_):planet(planet_) { }
void setParams(const double b_) {
b = b_;
}
};
class PlanetCatalog {
public:
Planet neptune;
Satellite triton(neptune);
void setAll() {
neptune.setParams(1.);
triton.setParams(2.);
}
};
但是,在编译时我遇到了错误。
error: unknown type name 'neptune'
Satellite triton(neptune);
是否可以像我在这里所做的那样将 Planet 和 Satellite 存储为同一类的变量。如果没有,有人可以建议用 C++ 组织此功能的更好方法吗?
最佳答案
使用括号进行类内初始化使编译器将 triton
视为非静态成员函数声明,其中 neptune
是第一个参数的类型,您应该使用 < em>list-initialization 语法改为:
Satellite triton{neptune};
请注意,实际上不需要为此定义PlanetCatalog
构造函数。
关于C++:通过引用另一个类成员变量来初始化类成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53232793/