Tämmönen onnistuu:
class luokka { public: unsigned char *taulukko; luokka(); }; luokka::luokka() { taulukko=new unsigned char[10]; } int main(int argc, char *argv[]) { luokka Luokka; system("PAUSE"); return 0; }
Mut tämmönen ei:
class luokka { public: unsigned char **taulukko; luokka(); }; luokka::luokka() { taulukko=new unsigned char[10][10]; } int main(int argc, char *argv[]) { luokka Luokka; system("PAUSE"); return 0; }
Eli kysymys kuuluu, miten varata muistia kaksiuloitteiselle taulukolle? Kääntäjänä toimii Dev-C++.
unsigned char * temp = new unsigned char[10*10]; unsigned char ** taulukko = new unsigned *char[10]; for (int i = 0; i < 10; i++) taulukko[i] = temp[i*10]; --- taulukko[2][4] = '?'; --- delete taulukko[0]; delete taulukko;
Jotenkin noin. Eli varaat alkioiden tarvitseman tilan kerralla ja varaat lisäksi indeksöintitaulukon, jonka alkiot koodaat sijoittamaan oikeaan kohtaan dataa.
No nyt alko iso täti laulaan:)
Kiitoksia
Tuossa oli itseasiassa pari typoa. Taulukkoon pitää tietenkin kopioida osoite temp tauluun eikä itse arvoa
for (int i = 0; i < 10; i++) taulukko[i] = temp + i*10; // tai &temp[i*10]
Samoin delete pitää varmaan olla delete[]. Eihän näitä C++:n juttuja enää muista.
Ihanaa, joku käyttää system("pause"):a ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.