Ik krijg de volgende C++-fout:
array must be initialized with a brace enclosed initializer
Van deze regel van C++
int cipher[Array_size][Array_size] = 0;
Wat is hier het probleem? Wat betekent de fout? Hieronder staat de volledige code:
string decryption(string todecrypt)
{
int cipher[Array_size][Array_size] = 0;
string ciphercode = todecrypt.substr(0,3);
todecrypt.erase(0,3);
decodecipher(ciphercode,cipher);
string decrypted = "";
while(todecrypt.length()>0)
{
string unit_decrypt = todecrypt.substr(0,Array_size);
todecrypt.erase(0,Array_size);
int tomultiply[Array_size]=0;
for(int i = 0; i < Array_size; i++)
{
tomultiply[i] = int(unit_encrypt.substr(0,1));
unit_encrypt.erase(0,1);
}
for(int i = 0; i < Array_size; i++)
{
int resultchar = 0;
for(int j = 0; j<Array_size; j++)
{
resultchar += tomultiply[j]*cipher[i][j];
}
decrypted += char((resultchar%229)-26);
}
}
return decrypted;
}
Antwoord 1, autoriteit 100%
De syntaxis om een array statisch te initialiseren gebruikt accolades, zoals deze:
int array[10] = { 0 };
Hierdoor wordt de array op nul geïnitialiseerd.
Voor multidimensionale arrays heeft u geneste accolades nodig, zoals deze:
int cipher[Array_size][Array_size]= { { 0 } };
Houd er rekening mee dat Array_size
een constante tijdens het compileren moet zijn om dit te laten werken. Als Array_size
niet bekend is tijdens het compileren, moet u dynamische initialisatie gebruiken. (Bij voorkeur een std::vector
).
Antwoord 2, autoriteit 17%
Je kunt een array niet zo initialiseren op ‘0’
int cipher[Array_size][Array_size]=0;
U kunt ofwel alle waarden in de array initialiseren terwijl u deze als volgt declareert:
// When using different values
int a[3] = {10,20,30};
// When using the same value for all members
int a[3] = {0};
// When using same value for all members in a 2D array
int a[Array_size][Array_size] = { { 0 } };
Of je moet de waarden initialiseren na declaratie. Als u bijvoorbeeld alle waarden op 0 wilt initialiseren, kunt u zoiets doen als:
for (int i = 0; i < Array_size; i++ ) {
a[i] = 0;
}
Antwoord 3
U kunt arrays niet op deze manier initialiseren:
int cipher[Array_size][Array_size]=0;
De syntaxis voor 2D-arrays is:
int cipher[Array_size][Array_size]={{0}};
Let op de accolades aan de rechterkant van de initialisatieverklaring.
voor 1D-arrays:
int tomultiply[Array_size]={0};