ptr_vector のコピーに問題があります。
Act オブジェクトのベクトルを持つソリューション クラスを使用しています。各 Act クラス内には、他の Act オブジェクトにリンクする ptr_vector があります。txt ファイルからいくつかのデータを読み取り、それを Sol オブジェクトに保存します。この Sol オブジェクトを他の Sol オブジェクトにコピーするにはどうすればよいですか (たとえば、ベクター内)。release と clone を使用して独自のコピー コンストラクターを sol クラスに記述しようとしましたが、ptr_vector を簡単にコピーできないようです。
前もって感謝します。
class Sol
{
public:
//data
int obj;
vector<Act*> deficit_act;
int deadline;
int nbr_res;
int nbr_act;
std::vector<Act> act;
std::vector<Res> res;
}
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/ptr_container/clone_allocator.hpp>
class Act
{
public:
//static
int id;
int es;//earliest start
int ls;//latest start
int range;//difference between ls and es
int dur;//duration of the activity
std::vector<int> dem;//demand requirement for every resource: needs to be initiliased
//predecessors and successors
int nrpr;
int nrsu;
boost::ptr_vector<Act> pr;
boost::ptr_vector<Act> su;
//dynamic
int start;
int end;
Act():id(-1),es(0),ls(0),range(0),dur(0),nrpr(0),nrsu(0),start(-1),end(-1){}
~Act(){}
};
//inside the main.cpp
Sol emptysol;
read_instance(emptysol,instance_nr,"J301_1");
emptysol.calc_parameters();
vector<Sol> sol;
sol.reserve(pop_size);
for(int ind=0;ind<pop_size;++ind)
{
sol.push_back(Sol(emptysol));// this throws a stack overflow error
}