Portál AbcLinuxu, 10. května 2025 01:10
QVector<QVector<<Figure*> > m_pole;Ve zdrojovem souboru mu pak urcim velikost:
m_pole.resize(size); for (int x = 0; x < m_pole.size(); x++) { m_pole[x].resize(size); }Rekneme, ze promenna (vyse) => size = 8. Potom tedy inicializuji prvky pole:
m_pole[4][4] = new Figure(4, 4, Figure::King, this); m_pole[7][7] = new Figure(7, 7, Figure::Queen, this);Nasledne pak v kodu potrebuji pristoupit pres pole k objektu Figure a zavolat jeji metodu:
Figure::Type type = m_pole[x][y]->type();Zde prichazi problem. Po zavolani metody nastane Segmentation fault. Debugger hlasi, ze ho zpusobuje fce Figure::type(). Jeste tedy prikladam definici tridy Figure:
zdrojak hlavickovy souborJeste dodam, ze uz jsem ze zoufalosti zkousel ruzne kombinace volani metody.. napriklad:
Figure::Type type = ((Figure*)m_pole[x][y])->type(); Figure::Type type = *m_pole[x][y])->type();
Řešení dotazu:
if (!m_pole[x][y]) continue;a nasledne s polem pracoval a pristupoval do prvku, kde objekt Figure vubec nebyl.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.