¿Declarar matriz en el encabezado de C++ y definirla en el archivo cpp?

Resuelto tree-hacker asked hace 13 años • 7 respuestas

Probablemente esto sea algo muy simple, pero soy nuevo en C++, así que necesito ayuda.

Sólo quiero declarar una matriz en mi archivo de encabezado C++ como:

int lettersArr[26];

y luego definirlo en una función en el archivo cpp como:

    lettersArr[26] = { letA, letB, letC, letD, letE, letF, letG, letH,
        letI, letJ, letK, letL, letM, letN, letO, letP, letQ, letR, letS,
        letT, letU, letV, letW, letX, letY, letZ };

pero esto no funciona.

¿Me he equivocado con la sintaxis o algo así? ¿Cuál es la forma correcta de hacer esto?

Muchas gracias.

tree-hacker avatar Dec 09 '10 02:12 tree-hacker
Aceptado

Agregue externa la declaración en el archivo de encabezado.

extern int lettersArr[26];

(Además, a menos que planee cambiar la matriz, considere agregar tambiénconst ).

La definición debe tener un tipo. Añadir int(o const int):

int lettersArr[26] = { letA, /*...*/ };
aschepler avatar Dec 08 '2010 19:12 aschepler

Encabezamiento:

extern int lettersArr[];

Fuente a nivel global:

int lettersArr[26] = { letA, letB, letC, letD, letE, letF, letG, letH,
    letI, letJ, letK, letL, letM, letN, letO, letP, letQ, letR, letS,
    letT, letU, letV, letW, letX, letY, letZ };

o si realmente quieres hacerlo en una función:

Fuente a nivel global:

int lettersArr[26];

Fuente en función:

int localLettersArr[26] = { letA, letB, letC, letD, letE, letF, letG, letH,
    letI, letJ, letK, letL, letM, letN, letO, letP, letQ, letR, letS,
    letT, letU, letV, letW, letX, letY, letZ };

memcpy (lettersArr, localLettersArr, sizeof (localLettersArr));
 avatar Dec 08 '2010 19:12