我有一个主函数,可以在for循环中创建类模拟的实例,并且在模拟的构造函数中,有一个for循环,它创建指向 Populations 的指针实例。
我的问题是,从输出中,我知道模拟的构造函数完成了对 Population * 的向量的推回,但它似乎不是真的离开构造函数,因为main中的for循环不会继续。 非常感谢你!
主要:
的摘录std::vector<Simulation> openSimulations ;
for(size_t i(0) ; i < n ; ++i)
{
std::cout << "Rounds that should be completed : " << n << std::endl ;
std::cout << "Stuck 3 !" << std::endl ;
openSimulations.push_back(Simulation(f, n, t, p, M, m)) ;
std::cout << "Finished adding!" << std::endl ;
}
模拟
的摘录Simulation::Simulation(std::vector<double> pInitialFrequencies, int pPopSize,
int pGenerationNumber, int pPopulationNumber, bool pMigration,
double pMigrationProbability )
:myGenerationNumber(pGenerationNumber), migration(pMigration),
myMigrationProbability(pMigrationProbability)
{
std::cout << "Stuck 6 !" << std::endl ;
for(int i(0) ; i < pPopulationNumber ; i++ )
{
myPopulations.push_back(new Population(pInitialFrequencies,
pGenerationNumber, pPopSize, myMigrationProbability)) ;
std::cout << "Stuck 7 !" << std::endl ;
}
std::cout << "Have exited or loop in Simulation::Simulation!" << std::endl ;
}
这是我在终端的输出:
Dimitris-MacBook-Pro:CMakeTemp Dimi$ ./Genomics -n 5 -f 0.2 -f 0.2 -f 0.6 -T 100 -N 100 -A 3 -r 3
Rounds that should be completed : 5
Stuck 3 !
Stuck 6 !
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Stuck 7 !
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Stuck 7 !
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Stuck 7 !
Have exited or loop in Simulation::Simulation!
Finished adding!
Rounds that should be completed : 5
Stuck 3 !
Stuck 6 !
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Stuck 7 !
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Stuck 7 !
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Inside Population::Population
Finished Adding Initial frequencies to Population's attribute
Stuck 7 !
Have exited or loop in Simulation::Simulation!
答案 0 :(得分:-1)
各位大家好,我找到了自己问题的答案!
模拟的析构函数不正确。
使用这样的析构函数,它现在可以工作:
Simulation::~Simulation()
{
for(auto population: myPopulations)
{
population = nullptr ;
delete population ;
}
}
我会在这里留下问题,以防任何人遇到同样的问题。