假设我有一个名为 MyFunction(int myArray[][])
的函数,它执行一些数组操作。
如果我这样写参数列表,编译器会提示它需要在编译时知道数组的大小。有没有办法重写参数列表,以便我可以将任意大小的数组传递给函数?
我的数组大小由类中的两个 static const int
定义,但编译器不会接受类似 MyFunction(int myArray[Board::ROWS][Board: :COLS])
.
如果我可以将数组转换为 vector ,然后将 vector 传递给 MyFunction
会怎么样?是否有我可以使用的单行转换,或者我是否必须手动进行转换?
最佳答案
在 C++ 语言中,多维数组声明必须始终包括除第一个以外的所有大小。因此,您尝试做的事情是不可能的。如果不显式指定大小,则不能声明内置多维数组类型的参数。
如果您需要将运行时大小的多维数组传递给函数,您可以忘记使用内置的多维数组类型。一种可能的解决方法是使用“模拟”多维数组(指向其他一维数组的指针的一维数组;或通过索引重新计算模拟多维数组的普通一维数组)。
关于c++ - 将未知大小的数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991057/