2015-12-13 34 views
0

我有一個函數for循環內的創建類仿真的實例,並且在仿真的構造,有一個用於環路創建指針的實例種羣滯留在構造C++

我的問題是,從輸出,我知道模擬的構造完成推回其人口的矢量*但它似乎不是真的離開的構造,因爲在循環主要不會繼續。 非常感謝你!

段從主要

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

檢查您的複製/移動構造函數和使用調試器。如果你在這裏需要幫助,你需要將你的代碼縮小到最小的部分,以便編譯和重現你的問題。 (你實際上有很大的機會通過嘗試創建最小的演示來解決你的問題。) – Mat

回答

-1

大家好我找到了答案,我自己的問題他們!

模擬的析構函數是不正確的。

通過這樣的析構函數,現在的工作:

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

我就離開這裏的問題的情況下,任何人都遇到同樣的問題..

+6

你意識到你沒有刪除任何東西嗎? – Mat

+0

對不起,但我很新的C++,我沒有意識到!你能告訴我如何正確地做到這一點?謝謝! –