我正在尝试创建动态内存。数组的大小由用户输入决定。我收到以下错误,
"expression must have a constant value"
。
这是我到目前为止所做的:
int* IntPtr = NULL;
int main(){
int arraySize;
cout << "How many numbers will be on the list? ";
cin >> arraySize;
IntPtr = new int[arraySize];
Contact list[arraySize]; // <-- expression must be constant
//more code
delete [] IntPtr;
答案 0 :(得分:5)
您正在尝试使用Variable Length Arrays。不幸的是,C ++不允许它们。 (虽然有些编译允许它们扩展)
您需要的是使用new
动态分配数组。 (并稍后用delete
)
您已经正确地执行了此操作:
IntPtr = new int[arraySize];
现在您可以对list
变量执行相同的操作:
Contact *list = new Contact[arraySize];
delete [] list;
或者,您可以使用vector
类,这通常比动态数组更受欢迎。
vector<Contact> list(arraySize);
答案 1 :(得分:3)
改为使用std::vector<Contact>
,或者如果要分配裸阵列,请执行与IntPtr
相同的操作:
Contact* list = new Contact[arraySize];