Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C++ (pointry)

Zdravím,
Už zase jsem se zamotal do pointrů v c++. Potřeboval bych poradit, jak by šel udělat vektor, který obsahuje nějaké uzly. Potom vytáhnu ukazatel na uzel ve vektoru a přiřadím jej jiném objektu.
Příklad:

vector<Node> vNode = vector<Node>(0);
Game game = Game(s,&Coord(r-1,p-1));
Node n = Node(game);
vNode.push_back(n);

addGames(vNode[0].getGame().dalsiTah(),&vNode,&vNo de[0]);
...

int addGames(vector<vector<Game> > game, vector<Node>* tr,Node* parent)
{
  tr->push_back(Node(game[i][j],parent));
  return 0;
}

objekt Node by si potom měl držet v privátní proměnné ukazatel na parent. Avšak tomu tak není :(. Když jsem metodu addgames volal

addGames(vNode[0].getGame().dalsiTah(),&vNode,&n);  // už ne přes vector, ale přímo ukazatel na Node (poslední parametr)

tak vše fungovalo podle očekávání. Vzhledem k tomu, že Nodeů mám velké množství, navíc se generují při běhu, tak nemůžu problém obejít podle 2. postupu. Potřebuji to udělat nějak přes ten vector nebo tomu podobně.

Díky za radu
Petr

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Este preistotu ta upozornim aj na jednu vec neviem ci vies: lokalne (deklarovane vnutri funkcie a ne… nový
MM.. 08.04.2011 00:49
MM..
Este posledne info :) To co chces asi nakoniec dosiahnut sa vola datova struktura strom (tree) http:… poslední
MM.. 08.04.2011 00:57
MM..

Este preistotu ta upozornim aj na jednu vec neviem ci vies:
lokalne (deklarovane vnutri funkcie a ne static) premenne su len v zasobniku a po skonceni funkcie prestavaju byt platne, ak si niekam ulozis ukazatel na takuto premennu tak po skonceni funkcie bude ukazovat na nezmysel (nahodne tam moze byt este nejaky cas spravna vec ale potom zrasu raz sa prepise niecim inym). To je dost blba chyba ptz ti to compiler ani linker neindikuje, takze aj na to pozor (to si sa snazil robit v tom druhom spososobe a to bolo tiez tak trochu zle aj ked ti to fungovalo v jednoduchom teste ale nebude to fungovat v komplikovanom programe).

Idealne je vyhybat sa ukazatelom kde to len ide. Napr. ten kontajner "vector" uz ti poskytuje uplne vsetko na to aby si vobec nepouzival ukazatele :)

Zpět do poradny Odpovědět na původní otázku Nahoru