gpt4 book ai didi

C++:通过引用另一个类成员变量来初始化类成员变量?

转载 作者:行者123 更新时间:2023-11-27 23:42:46 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com