我有一个类“ Population”,它具有一个称为“个人”的“机器人”对象向量。在“人口”中,我有一个名为expandPop()的方法,该方法使用push_back()将Robot对象添加到个人。
如果我在方法末尾打印出个人,则表明我已经成功修改了个人。但是,当我主要使用此方法时,个人实际上并未对该人口对象进行修改。仅在方法内修改。
main.cpp:
Population afpo(Population& p, int numGens, int maxPSize){
std::cout << "Expanded Pop: \n" << p << std::endl; //Prints 10 individuals
p.expandPop(); //p's individuals is unchanged after this method call
std::cout << "Expanded Pop: \n" << p << std::endl; //Should print out more individuals
return p;
}
int main() {
Population parents(10); //Population has 10 Robot objects stored in individual
int gens = 50;
parents = afpo(parents, gens, 10); //Runs an algorithm for 50 generations
}
Population类内部的方法expandPop():
Population::Population(int size){
popSize = size;
createIndividuals(popSize);
}
//Creates a population of robots
void Population::createIndividuals(int size){
for(int i=0; i<size; i++){
Robot r(i);
individuals.push_back(r);
}
}
void Population::expandPop(){
Robot r = Robot();
individuals.push_back(r)
for (int i = 0; i < individuals.size(); i++){
std::cout << individuals[i] << std::endl; //Shows that individuals was modified
}
}
对不起,我可能会误会,但是当您打印出个人时,您只打印出第一个元素
代替
std::cout << individuals << std::endl; //Shows that individuals was modified
我认为您应该尝试
for (int i = 0; i < individuals.size(); i++){
std::cout << individuals[i] << std::endl; //Shows that individuals was modified
}