[英]Stuck in constructor c++
I have a main function that creates instances of a class Simulation within a for loop, and in the constructor of Simulation , there is a for loop which creates instances of pointers to Populations . 我有一个for循环内创建一个类模拟的情况下,一个主要功能,并在模拟的构造,有一个for循环它创建指向人群的实例。
My issue is that from the output, I know that the constructor of Simulation finishes pushing back on its vector of Population* but it doesn't seem like it really leaves the constructor because the for loop in the main doesn't continue. 我的问题是,从输出中,我知道Simulation的构造函数完成了将其向量*填充回去的操作,但由于主循环中的for循环不会继续进行,因此它似乎并未真正离开构造函数。 Thank you very very much! 非常非常感谢你!
Snippet from main : 主要片段:
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 ;
}
Snippet from Simulation 仿真片段
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 ;
}
Here is my output from Terminal : 这是我从Terminal的输出:
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!
Hello everybody I found the answer to my own problem! 大家好,我找到了自己问题的答案!
The destructor of Simulation was improperly made. Simulation的析构函数是不正确的。
With the destructor like this, it works now : 有了这样的析构函数,它现在可以工作了:
Simulation::~Simulation()
{
for(auto population: myPopulations)
{
population = nullptr ;
delete population ;
}
}
I'll just leave the question here in case anybody comes across the same problem.. 如果有人遇到相同的问题,我将在这里留下问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.