陷入构造函数c ++

时间:2015-12-13 16:20:40

标签: c++ pointers constructor

我有一个函数,可以在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!

1 个答案:

答案 0 :(得分:-1)

各位大家好,我找到了自己问题的答案!

模拟的析构函数不正确。

使用这样的析构函数,它现在可以工作:

Simulation::~Simulation()
{
    for(auto population: myPopulations)
    {
        population = nullptr ;
        delete population ;
    }
}

我会在这里留下问题,以防任何人遇到同样的问题。