私は 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 が機能した例をまとめました。ベクトルを介してクラスオブジェクトを作成する場合、パズルの基本的なピースが欠けていると思います。
当時の私の現在の仮説は、型情報を間違って宣言しているか、ベクトルに情報を正しく渡していないというものです。これからも頑張ります。正しい方向への指針をいただければ幸いです。
ありがとうございました、
最適