2013-03-18 60 views
0

要做C++我使用的是dev C++。现在我需要与Visual Studio工作C++数组Visual Studio

我做同样的程序,但在Visual Studio中我有我以前没有在C++中

与此

int project = (rand() % 5) + 1 ; 
int P[project][3]; 

我有一个错误以下错误:

error C2057: expected constant expression

error C2466: cannot allocate an array of constant size 0

error C2133: 'P' : unknown size

你能帮助理解这个错误吗?

谢谢

回答

1

在这种情况下,您需要动态分配内存。所以你不能说int P[someVariable]。您需要使用int *mem = new int[someVariable]

看一看this link.

1

在C++中,您只能创建一个编译时间常量大小的数组。
在编译时需要知道数组P的大小,它应该是一个常量,编译器会通过诊断消息向您发出警告。

Why different results on different compilers?

大多数编译器允许您通过编译器扩展创建变长数组,但它是非标准批准,这种用法将在不同的编译器实现你的程序不便于携带。这是你的经验。

+0

好吧,一些编译器支持这个,但它肯定是一个扩展(请参阅http://stackoverflow.com/questions/1204521/dynamic-array-in-stack) – 2013-03-18 07:17:10

0

变长数组标准的C++类是std::vector。在这种情况下,你会得到std::vector<int> P[3]; P[0].resize(project); P[1].resize(project); P[2].resize(project);