return array

Status
Niet open voor verdere reacties.

janmulder13

Gebruiker
Lid geworden
15 sep 2009
Berichten
43
Hallo,
Ik wil een functie die eigenlijk een array 'returnt'.
ik heb dit:[CPP]
bool **TextToData8(char symbol8) {
bool **data8;
char symbol[1];
symbol[0] = symbol8;
data8 = malloc(8);
data8[0] = malloc(8);
data8[1] = malloc(8);
data8[2] = malloc(8);
data8[3] = malloc(8);
data8[4] = malloc(8);
data8[5] = malloc(8);
data8[6] = malloc(8);
data8[7] = malloc(8);

int counterx = 0;
int countery = 0;
while (countery != 8) {
while (counterx != 8) {
data8[counterx][countery] = 0;
counterx++;
}
counterx = 0;
countery++;
}
counterx = 0;
countery = 0;

if (symbol8 == 'a') {
data8[1][0] = true; data8[2][0] = true; data8[3][0] = true;
data8[0][1] = true; data8[4][1] = true;
data8[0][2] = true; data8[4][2] = true;
data8[0][3] = true; data8[4][3] = true;
data8[0][4] = true; data8[1][4] = true; data8[2][4] = true; data8[3][4] = true; data8[4][4] = true;
data8[0][5] = true; data8[4][5] = true;
data8[0][6] = true; data8[4][6] = true;
return data8;
}

}
[/CPP]
Het 'returnt' data8, en dat doet hij ook alleen vanaf data8[>3][..] dan geeft hij niet de goede waarde.
TextToData('a')[4][2] geeft bijvoorbeeld 0 aan, terwijl hij duidelijk naar 1 wordt gezet in de code.
Hoe kan dit?

Alvast bedankt!

Jan.
 
Laatst bewerkt:
Je initialiseert je array verkeerd, zoals ook blijkt uit deze foutmeldingen van mijn compiler bij het uitproberen van je code:
array.cpp: In function 'bool** TextToData8(char)':
array.cpp:9: error: invalid conversion from 'void*' to 'bool**'
array.cpp:10: error: invalid conversion from 'void*' to 'bool*'
array.cpp:11: error: invalid conversion from 'void*' to 'bool*'
array.cpp:12: error: invalid conversion from 'void*' to 'bool*'
array.cpp:13: error: invalid conversion from 'void*' to 'bool*'
array.cpp:14: error: invalid conversion from 'void*' to 'bool*'
array.cpp:15: error: invalid conversion from 'void*' to 'bool*'
array.cpp:16: error: invalid conversion from 'void*' to 'bool*'
array.cpp:17: error: invalid conversion from 'void*' to 'bool*'
Malloc levert een stuk geheugen met type void* op. Je zal dit dus moeten casten naar het juiste type. In dit geval wordt het dus:
[cpp]data8 = (bool**)malloc(8 * sizeof(bool*));
data8[0] = (bool*)malloc(8 * sizeof(bool));
data8[1] = (bool*)malloc(8 * sizeof(bool));
data8[2] = (bool*)malloc(8 * sizeof(bool));
data8[3] = (bool*)malloc(8 * sizeof(bool));
data8[4] = (bool*)malloc(8 * sizeof(bool));
data8[5] = (bool*)malloc(8 * sizeof(bool));
data8[6] = (bool*)malloc(8 * sizeof(bool));
data8[7] = (bool*)malloc(8 * sizeof(bool));[/cpp]
Overigens is dit de manier waarop je dit doet in C. In C++ gebruik je hier doorgaans, het makkelijkere, "new" voor:
[cpp]data8 = new bool*[8];
data8[0] = new bool[8];
data8[1] = new bool[8];
data8[2] = new bool[8];
data8[3] = new bool[8];
data8[4] = new bool[8];
data8[5] = new bool[8];
data8[6] = new bool[8];
data8[7] = new bool[8];[/cpp]
Met beide manieren klopt het bij mij wel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan