2014-01-16 2 views
0

Как я могу исправить эти три ошибки?Ошибка компилятора в объявлении массива?

  • ошибка C2057: ожидается постоянное выражение
  • ошибка C2466: не может выделить массив постоянного размера 0
  • ошибка C2133: 'randomTickets': неизвестный размер

линии, которая, имеющей проблемы и не нравится [билеты]

int randomTickets[tickets][SIZE]; 

//global constants 
const int SIZE = 6;      //This is the number of balls per ticket 
const int MAX_WHITE = 58;    //This is the range of the white balls 
const int MAX_RED = 34;     //This is the range of the red balls 
const int waysToWin = 9; 
int* newAr = new int[SIZE]; 

int main(int argc, const char * argv[]) 
{ 
    int tickets = displayMenu();  //Welcome screen lets you buy tickets 
    int spending = tickets * 2;   //Charges you for the tickets 
    int randomTickets[tickets][SIZE]; 
//code 

Заранее благодарим за вашу помощь!

+0

Сделайте 'билеты' постоянным выражением и убедитесь, что оно стоит e больше нуля. –

+1

Можете ли вы объяснить, какую часть сообщения об ошибке вы не понимаете? «Ожидаемое постоянное выражение» довольно просто. Неужели вы не знаете, где это ожидалось? (Вы, кажется, знаете это, поскольку вы изолировали его от «билетов».) Разве вы не знаете, что такое постоянное выражение? –

+0

'std :: vector > randomTickets (билеты);' (и +1 для комментария Раймонда). – WhozCraig

ответ

2

ошибка C2057: ожидается постоянное выражение

Вы не можете объявить randomTickets подобное, потому что размеры массива должны быть известны во время компиляции. tickets не является постоянной времени компиляции, и поэтому у вас есть ошибка. Рассмотрите возможность использования std::vector<T>:

std::vector<std::vector<int>> randomTickets(tickets, std::vector<int>(SIZE)); 

В качестве альтернативы, вы можете вкладываете std::array так SIZE постоянна и известна во время компиляции:

std::vector<std::array<int, SIZE>> randomTickets(tickets); 

Другие ошибки разрешаются путем фиксации это.

0

Переменная tickets не является постоянным выражением, поэтому.

Изменения int randomTickets[tickets][SIZE] следующим образом:

Array* randomTickets = new Array[tickets]; 

Вне функции main объявить следующий тип:

typedef int Array[SIZE]; 

Вы можете использовать переменную randomTickets как "нормальный" 2-мерный массив с этой точкой вперед, просто не забудьте до delete[] randomTickets, когда вы закончите ...

Смежные вопросы