【发布时间】:2012-03-14 16:16:01
【问题描述】:
我想将数组传递给构造函数,但只传递了第一个值——其余的看起来像垃圾。
这是我正在研究的简化版本:
#include <iostream>
class board
{
public:
int state[64];
board(int arr[])
{
*state = *arr;
}
void print();
};
void board::print()
{
for (int y=0; y<8; y++)
{
for (int x=0; x<8; x++)
std::cout << state[x + y*8] << " ";
std::cout << "\n";
}
}
int main()
{
int test[64] = {
0, 1, 2, 3, 4, 5, 6, 7,
1, 2, 3, 4, 5, 6, 7, 8,
2, 3, 4, 5, 6, 7, 8, 9,
3, 4, 5, 6, 7, 8, 9,10,
4, 5, 6, 7, 8, 9,10,11,
5, 6, 7, 8, 9,10,11,12,
6, 7, 8, 9,10,11,12,13,
7, 8, 9,10,11,12,13,14 };
board b(test);
b.print();
std::cin.get();
return 0;
}
有人可以解释为什么这不起作用以及如何正确传递数组吗?另外,我不想复制数组。 (而且我真的必须将代码的每一行缩进 4 个空格吗?这很乏味。)
【问题讨论】:
-
int (arr&)[64] 是你的数组的类型,数组不能被复制。最容易使用 std::array
-
关于缩进,IDE通常会为你做这个。
-
关于缩进——你不需要为每一行单独手动做。突出显示代码并按下编辑框上方的按钮,上面有一对大括号 -
{}-。 -
@Default:是的,我意识到我只需要进入我的 IDE,全选,点击选项卡,然后就可以为这个网站格式化了。傻我。
-
@Michael Burr:谢谢。下次我试试那个方法。
标签: c++ arrays visual-c++ constructor