Click here to Skip to main content
11,806,339 members (69,579 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: C++
I tried many things but didn't know how to fix it.

int size;
cout<<" Enter The Amount of Rooms : ";
cin >> size;
const int x=size;
Point *Room[x]; //expression must have a constant value;
Posted 13-Feb-13 0:09am
Edited 13-Feb-13 0:34am
Matej Hlatky at 13-Feb-13 6:25am
I think this code won't compile in any version of C#.
missak boyajian at 13-Feb-13 6:35am
Ooops I am working C++. I put c# by mistake.
Rate this: bad
Please Sign up or sign in to vote.

Solution 1

You cannot do that. You should dynamically allocate memory instead.
Point **Room = new Point*[size]; 

BTW don't forget to delete it then.
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

The expression must be constant at compile time. Your code uses a run-time constant. A compile time constant would look like this:
const int x = 5;
Point *Room[x]; // OK here
To create an array at runtime, use the new operator:
Point *Room = new Point[size];
// Use Room here
// ...
// Delete it when finished
delete [] Room;

Noted that Carlo has edited his solution to use an array of pointers to Point to use the same types as in the question. I will left my example unchanged, because it may be the intention to use this kind of array. If not, Carlo's answer should be used.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Richard Deeming 205
1 Sergey Alexandrovich Kryukov 170
2 ppolymorphe 165
3 OriginalGriff 145
4 Abhinav S 120
0 OriginalGriff 3,330
1 Maciej Los 1,990
2 KrunalRohit 1,907
3 CPallini 1,905
4 Richard MacCutchan 1,227

Advertise | Privacy | Mobile
Web04 | 2.8.151002.1 | Last Updated 13 Feb 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100