bubu ([info]bubu) rakstīja [info]koderi kopienā,
Jā, tas strādās. Bet viens liels Bet. Tas ir dikti slikts C++ kods. Tas jau praktiskir ir C kods. Tik ar C++ sintaksi.
Slikti ir lietot C castus, tb iekavas ar tipu tajā. Šajā gadījumā labāk derētu C++ dynamic_cast:
Node* Graph::getNode(char node)
{
    for (int x = 0; x < count; x++)
    {
        if (Node* curr = dynamic_cast<Node*>(getItem(x)))
        {
            if (curr->name == node)
            {
                return curr;
            }
        }
    }
    return 0;
}

dynamic_cast atgriezīs NULL, ja padotais objekts nevar tikt nokāstots un Node klases pointeri. Un tādā gadījumā if's nemaz neizpildīsies.

Taču šis arī ir nelabs C++ kods. Jebkurai dynamic_cast parādīšanās būtu tev jāliek kārtīgi pārdomāt savu klašu hierarhiju.
Šajā gadījumā nevarētu iztikt ar pure virtual funkciju Item klasē?
virtual char getName() = 0;

Vai pat ne tikai getName, bet paša darba izdarīšanu, ko gribi ar Node/Item objektiem darīt:
virtual char do_your_stuff() = 0;

Tad attiecīgi Node klasē to implementēt (kā arī Graph), un tad:
void Graph::do_your_stuff(char node)
{
    for (int x = 0; x < count; x++)
    {
        Item* item = getItem(x);
        if (item->getName() == node)
        {
            item->do_your_stuff();
        }
    }
}

Kautgan arī neizskatās īpaši skaisti. Taču ko precīzāku ieteikt nezinot, ko tu tur centies izvedot, ir grūti.


(Lasīt komentārus)

Nopūsties:

No:
Lietotājvārds:
Parole:
Ievadi te 'qws' (liidzeklis pret spambotiem):
Temats:
Tematā HTML ir aizliegts
  
Ziņa:

Gandrīz jau aizmirsu pateikt – šis lietotājs ir ieslēdzis IP adrešu noglabāšanu. Operatore Nr. 65.
Neesi iežurnalējies. Iežurnalēties?