C++-fout: Array moet worden geïnitialiseerd met een accolade ingesloten initializer

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_sizeeen constante tijdens het compileren moet zijn om dit te laten werken. Als Array_sizeniet 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};

LEAVE A REPLY

Please enter your comment!
Please enter your name here

5 + 14 =

Other episodes