Joo eli pitäs tehdä taulukko, mutta en onnistu tekemään sitä toise muuttujan kautta..
Eli meinaan alla oleva esimerkki ei toimi ainakaan minulla.
int koko = 300; T_KARTTA t_map[koko];
Valittaa: variable-size type declared outside of any function
Miten tuo tulisi toteuttaa "oikealla" tavalla, tai enneminkin toimivalla?
Taulukon koko tulee olla määritetty vakiolla. Ts.
T_KARTTA t_map[300];
Jos haluat määrittää koon ajonaikana, tulee käyttää dynaamista muistia:
int koko = 300; T_KARTTA* t_map = new T_KARTTA[koko]; // käyttö t_map[23] = 242; // MUISTA MUISTIN VAPAUTUS delete [] t_map; t_map = 0;
oo, kiitoksia. :P
Vielä hieman vähemmän virheitä mahdollistava tapa ovat vektorit eli C++:n dynaamiset taulukot. Niitä ei tarvitse erikseen vapauttaa, ne vapautuvat itsekseen aivan samaan tapaan kuin tavalliset staattisetkin taulukot.
#include <vector> using std::vector; // Vektori on std-nimiavaruudessa vector<T_KARTTA> t_map; // Vektorillinen T_KARTTA-tyyppisiä t_map.resize(koko); // Koon muuttaminen (voi siis muuttaa milloin vain). t_map[0] = ...; // Voi käyttää ihan normaalin taulukon tapaan t_map.clear(); // Sama kuin koon asettaminen nollaksi...
Kannattaa kääntää ohjelma -O-lipulla (tai laittaa projektin tai kääntäjän asetuksista perusoptimointi päälle), jotta kääntäjä ei tahallaan tee noista aivan hirvittävän hidasta koodia. Optimoinnin kanssa nopeus ei juuri poikkea tavallisesta taulukosta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.