Hei,
Olen tässä hieman opiskellut C++ ohjelmointia mutta tähän probleemaan en oikein löytänyt vastausta mistään.
Laitetaan suoraan koodin pätkä :
for (int i = 1; i < 5; i++) { objekti li = uusi_objekti(); }
Nykyisellään koodi ei toimi mutta onko mahdollista käyttää tuota "i" muuttujaa tuossa l perässä ja jos on niin miten. Esim että tämä koodi loisi (l1,l2,l3,l4,l5);
Mod. lisäsi kooditagit.
Nyt en kyllä oikein ymmärrä, että mitä yrität tehdä. Jos sinun pitää luoda useita olioita, niin silloin ne tulisi tallentaa taulukkoon, ennemmin kuin yrittää luoda dynaamisesti liudan muuttujia (en usko, että tuo on edes mahdollista). Jokatapauksessa tuo, mitä yrität tehdä, näyttää minun silmääni varsin oudolta ja epämääräiseltä.
Käytä kooditageja.
Tarkoititkohan nyt taulukkoja? (Olisit siis löytänyt vastauksen niinkin helposti kuin lukemalla C++-opasta ihan järjestyksessä.)
Eli nimenomaan useiden olioiden luomista. Tuolla menetelmällä. Siis nyt olen tehnyt näin :
objekti 11 = uusi_objekti(); objekti l2 = uusi_objekti(); objekti l3 = uusi_objekti(); objekti l4 = uusi_objekti(); objekti l5 = uusi_objekti();
Mutta mietin voinko FOR silmukalla toteuttaa ton.
Sinun tulee luoda objekti-tyyppinen taulukko, jonka alkioihin asetat for-loopissa (yksi kerrallaan) objekti-tyyppisen olion arvoksi.
Metabolix: Linkkisi ei toimi.
Toni, nyt toimii. :)
Uusia muuttujien nimiä ei voi luoda ohjelman aikana, koska käännetty ohjelma ei tiedä enää mistään muuttujista. Siksi pitää käyttää taulukkoa. Jos haluat luoda epämääräisillä "nimillä" olioita kesken ohjelman, voit käyttää myös map-rakennetta:
#include <map> // Map-rakenteen määrittely: std::map<int, objekti> l; // Lisäys: l[1] = uusi_objekti(); l[123] = uusi_objekti(); l[666] = uusi_objekti(); // Poisto: l.erase(123);
Ei voi, mutta taulukot ovat juuri tuota varten. Luot vain 5 soluisen taulukon ja tallennat ne objektit sinne for-loopilla. Eli jotain tämän suuntaista:
objekti objektit[5]; for(int i=0; i<5; ++i) { objektit[i] = uusi_objekti(); }
EDIT:
Oho, oli näköjään vanha sivu jäänyt auki. ;D Vastasin siis Hansofoundationille.
Kiitos paljon. Tosissaan nyt kun hieman ymmärsi tosta rakenteitten tekemisestä taulukkoon ratkesi aika moni muukin ongelma tai ainakin helpottu joittenkin asioitten toteutus.
Dimple kirjoitti:
objekti objektit[5]; for(int i=0; i<5; ++i) { objektit[i] = uusi_objekti(); }
Lyhyemmin:
objekti objektit[5];
koo kirjoitti:
Lyhyemmin:
objekti objektit[5];
Sillä oletuksella, että luokan objekti oletusmuodostin tekee saman kuin funktio uusi_objekti().
Jos haluat ehdottomasti käyttää indeksi numeroiden sijaa nimiä l1,l2,l3, jne. Voit etsiä C++ kirjaston, joka toteuttaa pythonin dictionary-tyyppisen muuttujan ominaisuudet:python kirjasto.
Mutta kuten aijemmin todettu, kannattaa tiedot tallentaa tässä tapauksessa taulukkoon.
tkok kirjoitti:
Voit etsiä C++ kirjaston, joka toteuttaa pythonin dictionary-tyyppisen muuttujan ominaisuudet
Mielestäni std::map on jo ketjussa mainittu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.