gpt4 book ai didi

c++ - 动态初始化对象

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:30 26 4
gpt4 key购买 nike

我有一个名为 players 的 vector 和一个名为 Player 的类。我想做的是写:

players.push_back(Player(name, Weapon(bullets)));

所以我希望能够循环创建玩家。但是我看到一条错误消息说“调用 Player::Player 没有匹配的函数...”

然后我将其更改为:

Weapon w(bullets);
Player p(name, w);
players.push_back(p);

这是我的播放器定义:

class Player {
public:
Player(string &name, Weapon &weapon);
private
string name;
Weapon weapon;
}

我只是想了解这些定义之间的区别。这是将对象传递给对象构造函数的正确方法吗?

注意:这些不是我实际的类定义。我只是想通过编码来学习一些关于 C++ 中面向对象编程的知识。我的意思是我知道 Weapon 可以在 Player 中初始化 :)

最佳答案

将构造函数更改为:

Player(const string &name, const Weapon &weapon);

或:

Player(const string &name, Weapon weapon);

用临时对象初始化引用是无效的 C++,这是你在使用时所做的:

Player(name, Weapon(bullets));

虽然使用 const 引用是合法的。

编辑:您还应该将名称作为const 引用或按值传递。

关于c++ - 动态初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571224/

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