我正在使用C ++进行一些数组传递。以下工作,只要我用数字定义数组,如:
gen0[6][7].
但是,我无法调用我发送变量作为我的大小参数的方法。我意识到我可能需要将它们作为指针或引用传递。我在别处读过使用unsigned int
,没有用。我尝试了一些变化,但我在整个概念上挣扎。任何提示/建议将不胜感激!
//in main
int col1, col2;
col1 = rand() % 40 + 1;
col2 = rand() % 50 +1;
int gen0[col1][col2];
print(gen0)
//not in main
template<int R, int C>
void print(int (&array)[R][C])
答案 0 :(得分:1)
VLA(可变长度数组)是某些编译器的扩展,它在运行时完成。
,而:
template<int R, int C> void print(const int (&array)[R][C])
是通过引用传递多维数组的正确方法,这是在编译时完成的,与VLA不兼容。
可能的替代方法是使用std::vector
:
std::vector<std::vector<int>> gen0(col1, std::vector<int>(col2));
和
void print(const std::vector<std::vector<int>>& array)