我试图完全重新提出这个问题。情况如下:
class Departure {
private :
unsigned int supply;
public :
Departure(int);
~Departure();
int getSupply() {
return supply;
};
};
class Route {
private :
Departure* departure;
public :
Departure& getDeparture() {
return *departure;
};
};
class Plan {
private :
std::map<Route*, double> quantities;
public :
void addRoute(Route& rt) {
quantities.insert(std::pair<Route*,double>(&rt,0));
};
void createSolution() {
std::map<Route*, double>::iterator it;
for(it = quantities.begin(); it != quantities.end(); ++it) {
it->second = it->first->getDeparture().getSupply();
};
};
添加路线后 - 我已经检查过,它运行正常,我从我的试用版中获得了一个段错误到目前为止的错误位于it->first->getDeparture().getSupply()
电话中。有什么解释吗?
答案 0 :(得分:1)
我猜想(99%肯定)你正面临悬挂指针的问题,也就是说,当你调用createSolution时,指向Route和Departure对象的指针不再有效。
简单的解决方法是不使用指针,而是将Route和Departure对象存储为值。无论如何,将它们存储为指针并没有多大好处,因为对象太小了......