Reputation: 93
How do I go about fixing these three errors?
Line that's having the issue and not liking [tickets]
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
Thanks in advance for your help!
Upvotes: 1
Views: 907
Reputation: 9071
error C2057: expected constant expression
You can't declare randomTickets
like that because the dimensions of the array need to be known at compile time. tickets
is not a compile time constant and therefore you have the error. Consider using std::vector<T>
:
std::vector<std::vector<int>> randomTickets(tickets, std::vector<int>(SIZE));
Alternatively, you can nest a std::array
since SIZE
is constant and known at compile time:
std::vector<std::array<int, SIZE>> randomTickets(tickets);
The other errors are resolved by fixing this one.
Upvotes: 3
Reputation: 30136
Variable tickets
is not a constant expression, that's why.
Change int randomTickets[tickets][SIZE]
as follows:
Array* randomTickets = new Array[tickets];
Outside of function main
, declare the following type:
typedef int Array[SIZE];
You can use variable randomTickets
as a "normal" 2-dimensional array from this point onwards, just don't forget to delete[] randomTickets
when you're done...
Upvotes: 0