Tablica i error C2057: expected constant expression
Ostatnio zmodyfikowano 2013-07-13 17:40
Bajt Temat założony przez niniejszego użytkownika |
Tablica i error C2057: expected constant expression » 2013-07-13 17:09:18 Witam Pisząc moją aplikację, natknąłem się na problem. Otóż napisałem taki kod: int number_players = 0;
int ReturnNumberPlayers() { system( "CLS" ); HANDLE handle; handle = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( handle, 2 ); SetConsoleTextAttribute( handle, 7 ); std::cout << "\t\t\t"; for( int i = 0; i < 32; ++i ) { SetConsoleTextAttribute( handle, 1 ); std::cout << "-"; } SetConsoleTextAttribute( handle, 7 ); std::cout << "\n\t\t\tEnter number of players [max.5]: "; std::cin >> number_players; Sleep( 1000 ); return number_players; } void GetNamesPlayers( int number_players ) { system( "CLS" ); HANDLE handle; handle = GetStdHandle( STD_OUTPUT_HANDLE ); std::string names_players[ number_players ]; for( int i = 1; i < number_players + 1; ++i ) { SetConsoleTextAttribute( handle, 7 ); std::cout << "\t\t\t"; for( int y = 0; y < 32; ++y ) { SetConsoleTextAttribute( handle, 1 ); std::cout << "-"; } SetConsoleTextAttribute( handle, 7 ); std::cout << "\n\t\t\tEnter name player " << i << " "; std::cin >> names_players[ i ]; Sleep( 1000 ); _getch(); } }
I wywala mi błędy: 1>------ Build started: Project: Paper Stone Scrissors Game, Configuration: Debug Win32 ------ 1> game.cpp 1>c:\users\user\documents\programs c++\paper stone scrissors game\paper stone scrissors game\paper stone scrissors game\game.cpp(1298): error C2057: expected constant expression 1>c:\users\user\documents\programs c++\paper stone scrissors game\paper stone scrissors game\paper stone scrissors game\game.cpp(1298): error C2466: cannot allocate an array of constant size 0 1>c:\users\user\documents\programs c++\paper stone scrissors game\paper stone scrissors game\paper stone scrissors game\game.cpp(1298): error C2133: 'names_players' : unknown size ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Oczywiście, treść błędów jest mi znana, jednak jak je rozwiązać? |
|
Savail |
» 2013-07-13 17:15:34 Liczba elementów przy tworzeniu tablicy musi być stała, a więc zmień parametr funkcji z GetNamesPlayers( int number_players ) na GetNamesPlayers( const int number_players ) |
|
Monika90 |
» 2013-07-13 17:20:35 @Savail nie tylko musi być stała, ale jeszcze znana w czasie kompilacji (no chyba, że masz C++14)
Najelpiej będzie użyć std::vector<std::string> |
|
Bajt Temat założony przez niniejszego użytkownika |
» 2013-07-13 17:21:42 Spróbowałem, jednak nie pomogło. Próbowałem zrobić coś takiego: const int test = number_players; std::string names_players[ test ];
Ale dalej ten sam błąd... @Monika Czyli jakby taki kod wyglądał? |
|
Savail |
» 2013-07-13 17:27:46 Tak jak napisała Monika a mi się zapomniało :o. Jeśli nie znasz z góry ilości elementów tablicy to lepiej już użyj dynamicznej tablicy bądź gotowych klas takich jak vector. |
|
Monika90 |
» 2013-07-13 17:28:56 #include <vector>
std::vector < std::string > names_players( number_players );
I pamiętaj, że tablice i vector indeksuje się od 0 do n - 1, w kodzie który zamieściłeś masz od 1 do n, gdzie n to ilość elementów. |
|
Bajt Temat założony przez niniejszego użytkownika |
» 2013-07-13 17:40:54 Wielkie dzięki za pomoc! |
|
« 1 » |