У меня есть vector
, в котором хранится несколько class
object
с для последующего доступа. Таким образом, моя программа может создавать новые object
во время выполнения. Это делается так:
vector<Person> peopleVector;
peopleVector.push_back(Person(name, age));
for (int i = 0; i < peopleVector.size(); i++) {
cout << peopleVector[i].name << endl;
}
Эта функция должна печатать каждое object
имя "каждый раз, когда выполняется код (это функция, которая запускается несколько раз). Однако, когда я запускаю это, каким-то образом vector
не увеличивается в размере. Если вы добавите cout << peopleVector.size();
к этому коду, вы обнаружите, что каждый раз, когда он запускается, он получает один (очевидно, при условии, что у вас также есть код class
, который у меня есть ниже).
Мне любопытно, почему я не могу создать несколько object
с в классе.
Class.h
#pragma once
#include <iostream>
using namespace std;
class Person {
public:
Person(string personName, int personAge);
string name;
int age;
};
Person::Person(string personName, int personAge) {
name = personName;
age = personAge;
}
main.cpp
#include "Class.h"
#include <random>
int main() {
// Necessary for random numbers
srand(time(0));
string name = names[rand() % 82]; // Array with a lot of names
int age = 4 + (rand() % 95);
}
// Create a new person
void newPerson(string name, int age) {
vector<Person> peopleVector;
peopleVector.push_back(Person(name, age));
for (int i = 0; i < peopleVector.size(); i++) {
cout << peopleVector[i].name << endl;
}
}
К вашему сведению, эти #include
могут быть немного неактивными, потому что я вынул этот код из большого раздела, в котором было около 15 включений.