2012-06-25 89 views
1

如何在C++中声明没有第一个大小的二维或多维数组?声明无大小的第二个数组

class numeric 
{ 
    public: 
    int int_array_numbers[][]; 
    ... 
}; 

错误消息: 声明“int_array_numbers”作为多维数组必须针对所有维度边界除第一

+0

希望这种联系是有益的[此处输入链接的描述] [1] [1]:HTTP: //stackoverflow.com/questions/5737905/why-cc-allows-omission-of-leftmost-index-of-a-multidimensional-array-in-a-fun – Raj

回答

5

你可以从两个参数声明类为模板 像这样

template <int N, int M> 
class numeric 
{ 
public: 
    int int_array_numbers[N][M]; 
... 
}; 
+0

是的。谢谢@Luchian –

+0

在这种情况下,'N'和'M'必须是编译时间常量。但是将它们作为构造函数的参数并不困难,一个'std :: vector '成员初始化为'N * M',另一个重载的'[]'运算符做了正确的事情。 –

10

不能,C++不支持VLA的(可变长度数组)。

改为使用std::vector<std::vector<int> >

+1

谢谢,但我不想使用向量。我需要使用标准库... –

+3

@AliN你不想或者你不能?因为如果你可以但你只是不想,你应该克服它。 :) –

+3

@AliN,因为当矢量不是标准库? o.O – Griwes