c++arrayscompiler-errors

C++ error: "Array must be initialized with a brace enclosed initializer"


I am getting the following C++ error:

array must be initialized with a brace enclosed initializer 

From this line of C++

int cipher[Array_size][Array_size] = 0;

What is the problem here? What does the error mean? Below is the full 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;
}

Solution

  • The syntax to statically initialize an array uses curly braces, like this:

    int array[10] = { 0 };
    

    This will zero-initialize the array.

    For multi-dimensional arrays, you need nested curly braces, like this:

    int cipher[Array_size][Array_size]= { { 0 } };
    

    Note that Array_size must be a compile-time constant for this to work. If Array_size is not known at compile-time, you must use dynamic initialization. (Preferably, an std::vector).