c ++ passage de fonction en erreur principale

salut j’ai c ++ code suivant où je veux appeler la fonction en main

#include  #include  int main() { using namespace std; readData(); int sumA = accumulate(A, A + sizeof(A) / sizeof(int), 0); int sumB = accumulate(B, B + sizeof(B) / sizeof(int), 0); cout < sumB) ? "Array A Greater Than Array B\n" : "Array B Greater Than Array A\n"); return 0; } void readData() { int A[] = { 1, 1, 8}; int B[] = { 2, 2, 2}; } 

J’ai l’erreur suivante sur cli:

 test.cpp:3:7: error: storage size of 'B' isn't known test.cpp:4:7: error: storage size of 'A' isn't known 

Où est-ce que je me trompe ici? Merci

Les variables A et B sont locales à la fonction readData et ne sont accessibles à aucune autre fonction.

Déclarez-les en tant que variables globales (non recommandées) ou en tant que variables locales dans main et transmettez-les en tant qu’arguments à la fonction readData .

Je vous recommande également d’utiliser std::vector plutôt que des tableaux simples.

Tout d’abord, faites attention à la taille des tableaux en C et C ++. Lisez ici pour plus d’informations: http://www.cplusplus.com/faq/sequences/arrays/sizeof-array/

Cependant, utilisez plutôt std :: vector comme ceci.

 #include  #include  #include  typedef std::vector int_vec_t; //Call by reference to set variables in function void readData(int_vec_t& v1, int_vec_t& v2) { v1 = int_vec_t{1,1,8}; //This only works for C++11 v2 = int_vec_t{2,2,2}; } void readUserData(int_vec_t& v) { for(;;) { int val; std::cin>>val; if(val == 0) break; v.push_back(val); } } int main() { using namespace std; int_vec_t A; int_vec_t B; readData(A,B); //Or readUserData(A); readUserData(B); int sumA = accumulate(A.begin(), A.end(), 0); //Then use iterators int sumB = accumulate(B.begin(), B.end(), 0); cout << ((sumA > sumB) ? "Array A Greater Than Array B\n" : "Array B Greater Than Array A\n"); return 0; }