Click here to Skip to main content
Rate this: bad
good
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 1:09am
Edited 13-Feb-13 1:34am
v2
Comments
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
good
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.
  Permalink  
v2
Rate this: bad
good
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;
 
[EDIT]
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.
[/EDIT]
  Permalink  
v2

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

  Print Answers RSS
0 OriginalGriff 6,045
1 DamithSL 4,611
2 Maciej Los 4,087
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,310


Advertise | Privacy | Mobile
Web02 | 2.8.141220.1 | Last Updated 13 Feb 2013
Copyright © CodeProject, 1999-2014
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