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.