我在我的c ++程序中遇到了段错误,无法弄清楚我的错误 我有一个类Map,它是MapCells类对象的2D矢量。任务是从一个细胞到另一个细胞。从每个细胞,到其他细胞有两种可能的方式。也许一些“伪”代码可以更好地解释它:
//map.h
class MapCell {
private:
MapCell *p_way1_, *p_way2_;
int some_information_;
public:
MapCell* getWayPointer1();
MapCell* getWayPointer2();
int getInformation();
void setWayPointer1(MapCell* new_p_way1);
void setWayPointer1(MapCell* new_p_way2);
};
class Map {
private:
std::vector< std::vector<MapCell> > map_;
public:
void initializeMap();
MapCell* getStartPointer();
};
int main()
{
Map map;
map.initializeMap();
MapCell *p_current_cell, *p_next_cell;
p_current_cell = map.getStartPointer();
while(p_current_cell->getInformation() != 0)
{
if(p_current_cell->getInformation() == 1)
{
p_next_cell = p_current_cell->getWayPointer1();
}
else
{
p_next_cell = p_current_cell->getWayPointer2();
}
p_current_cell = p_next_cell;
}
return 0;
}
这只是真实代码的一小部分。但我认为我犯了一个根本性的错误,所以我希望这是足够的代码来解决它。
问题是,我的代码运行了几分钟没有问题,突然间我遇到了段错误。 gdb声明,当调用getInformation()时会发生段错误。 我也发现,在某些时候所有的p_way2_载体都会导致废话。你能帮助我吗?
非常感谢你!
答案 0 :(得分:0)
行中的问题
MapCell* p_current_cell, p_next_cell;
MapCell* p_way1_, p_way2;
第二个参数不是指针,MapCell是从指针隐式转换(或者你会得到多个编译时错误)。 尝试更改为
MapCell* p_current_cell, *p_next_cell;
MapCell* p_way1_, *p_way2;