我是 C++ 初学者(没有以前的编程经验)。我正在编写一个基于文本的游戏,并且我有一个核心模块来开发游戏的“人口”。到目前为止,我已经确定了人口增长率(基于预定义的出生率和死亡率),我现在要做的是为每个公民创建一个独特的对象。
我创建了Citizen类,并使用向量来生成初始的公民群体:
vector<Citizen> myCitizens (100);
有一个函数可以为这 100 个公民中的每一个设置几个初始值。那里没有问题。
该程序每“年”都会计算该年的出生和死亡人数。我想根据那一年的出生人数将新对象添加到myCitizens向量中。
我被困在这个功能上:
宣言:
int new_citizens(int newBirths);
定义:
int new_citizens(int newBirths)
{
myCitizens.push_back(newBirths);
}
编译器构建消息:
error: no matching function for call to 'std::vector<Citizen>::push_back(int&)'
note: candidate is:
note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = Citizen; _Alloc = std::allocator<Citizen>; std::vector<_Tp, _Alloc>::value_type = Citizen]
我已经搜索了这个问题,查看了文档,搞砸了更改类型无济于事。我已经编译了 push_back 确实有效的示例。我认为在通过向量创建类对象时,我错过了一个基本的难题。
我当时的假设是我声明类型信息错误或没有正确地将信息传递给向量。我会继续努力。任何正确方向的指针将不胜感激!
谢谢,
最优