【发布时间】:2020-04-20 00:12:36
【问题描述】:
我对 CPP 还是很陌生,我正在利用我们目前的所有空闲时间尝试新事物。我有 2 个单独的类,我想在 main 中为这两个类创建一个初始化列表......也许我没有用最好的话说,但是......
有这个:
class Status
{
public:
int x, y;
float angle;
unsigned short hp;
bool isActive;
Status(const int _x, const int _y, const float _angle, const unsigned short _hp, bool _isActive)
: x(_x), y(_y), angle(_angle), hp(_hp), isActive(_isActive){};
};
还有这个:
class Hero
{
std::string name;
Status status;
Hero(const std::string _name, Status &status)
: name(_name), status(x, y, angle, hp, isActive){};
void display()
{
std::cout << "Hero:\t" << name << std::endl;
std::cout << "HP:\t" << Hero::status.hp << std::endl;
std::cout << "Hero is " << Hero::status.isActive ? " active" : " inactive";
std::cout << std::endl;
};
...我最终想做这样的事情...
Hero h = {"Iron Man", {1, 2, 32.9, 100, true}};
请指导我,哦,聪明的人......
【问题讨论】:
-
Hero构造函数不会编译。它引用了未在该范围内声明的名称x、y等。 -
...如何设置 Hero 类构造函数以在实例化时将 hero 和 status 成员设置在初始化列表中。
标签: c++ object constructor initializer-list