错误:从初始值设定项列表向数组赋值;在ubuntu 1004上工作但在14.04上不工作的代码



如果这里有人能为我的问题指明正确的方向,我将非常高兴。

我在这个论坛和其他一些论坛上读了很多关于此事的帖子,但都无济于事。

我在Ubuntu 14.04下用C++在Qt Creator 3.2.1中工作。这段代码又大又旧,它可以在Ubuntu 10.04下的其他旧计算机上编译,没有任何问题。

我得到的错误是"从初始值设定项列表分配给数组"。

代码如下:

MapOut =
{
    {0,0},{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},
    {0,1},{1,1},{2,1},{3,1},{4,1},{5,1},{6,1},{7,1},
    {0,2},{1,2},{2,2},{3,2},{4,2},{5,2},{6,2},{7,2},
    {0,3},{1,3},{2,3},{3,3},{4,3},{5,3},{6,3},{7,3},
    {0,4},{1,4},{2,4},{3,4},{4,4},{5,4},{6,4},{7,4},
    {0,5},{1,5},{2,5},{3,5},{4,5},{5,5},{6,5},{7,5},
    {0,6},{1,6},{2,6},{3,6},{4,6},{5,6},{6,6},{7,6},
    {0,7},{1,7},{2,7},{3,7},{4,7},{5,7},{6,7},{7,7},
    {0,8},{1,8},{2,8},{3,8},{4,8},{5,8},{6,8},{7,8},
    {0,9},{1,9},{2,9},{3,9},{4,9},{5,9},{6,9},{7,9},
    {0,10},{1,10},{2,10},{3,10},{4,10},{5,10},{6,10},{7,10},
    {0,11},{1,11},{2,11},{3,11},{4,11},{5,11},{6,11},{7,11},
    {0,12},{1,12},{2,12},{3,12},{4,12},{5,12},{6,12},{7,12},
    {0,13},{1,13},{2,13},{3,13},{4,13},{5,13},{6,13},{7,13},
    {0,14},{1,14},{2,14},{3,14},{4,14},{5,14},{6,14},{7,14},
    {0,15},{1,15},{2,15},{3,15},{4,15},{5,15},{6,15},{7,15},
    {0,16},{1,16},{2,16},{3,16},{4,16},{5,16},{6,16},{7,16},
    {0,17},{1,17},{2,17},{3,17},{4,17},{5,17},{6,17},{7,17},
    {0,18},{1,18},{2,18},{3,18},{4,18},{5,18},{6,18},{7,18},
    {0,19},{1,19},{2,19},{3,19},{4,19},{5,19},{6,19},{7,19},
    {0,20},{1,20},{2,20},{3,20},{4,20},{5,20},{6,20},{7,20},
    {0,21},{1,21},{2,21},{3,21},{4,21},{5,21},{6,21},{7,21},
    {0,22},{1,22},{2,22},{3,22},{4,22},{5,22},{6,22},{7,22},
    {0,23},{1,23},{2,23},{3,23},{4,23},{5,23},{6,23},{7,23}
};

相当大的数组。。。36x8。。。如果我这样做:

static int MapOut[] =
{
    {0,0},{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},
    {0,1},{1,1},{2,1},{3,1},{4,1},{5,1},{6,1},{7,1},
    {0,2},{1,2},{2,2},{3,2},{4,2},{5,2},{6,2},{7,2},
    {0,3},{1,3},{2,3},{3,3},{4,3},{5,3},{6,3},{7,3},
    {0,4},{1,4},{2,4},{3,4},{4,4},{5,4},{6,4},{7,4},
    {0,5},{1,5},{2,5},{3,5},{4,5},{5,5},{6,5},{7,5},
    {0,6},{1,6},{2,6},{3,6},{4,6},{5,6},{6,6},{7,6},
    {0,7},{1,7},{2,7},{3,7},{4,7},{5,7},{6,7},{7,7},
    {0,8},{1,8},{2,8},{3,8},{4,8},{5,8},{6,8},{7,8},
    {0,9},{1,9},{2,9},{3,9},{4,9},{5,9},{6,9},{7,9},
    {0,10},{1,10},{2,10},{3,10},{4,10},{5,10},{6,10},{7,10},
    {0,11},{1,11},{2,11},{3,11},{4,11},{5,11},{6,11},{7,11},
    {0,12},{1,12},{2,12},{3,12},{4,12},{5,12},{6,12},{7,12},
    {0,13},{1,13},{2,13},{3,13},{4,13},{5,13},{6,13},{7,13},
    {0,14},{1,14},{2,14},{3,14},{4,14},{5,14},{6,14},{7,14},
    {0,15},{1,15},{2,15},{3,15},{4,15},{5,15},{6,15},{7,15},
    {0,16},{1,16},{2,16},{3,16},{4,16},{5,16},{6,16},{7,16},
    {0,17},{1,17},{2,17},{3,17},{4,17},{5,17},{6,17},{7,17},
    {0,18},{1,18},{2,18},{3,18},{4,18},{5,18},{6,18},{7,18},
    {0,19},{1,19},{2,19},{3,19},{4,19},{5,19},{6,19},{7,19},
    {0,20},{1,20},{2,20},{3,20},{4,20},{5,20},{6,20},{7,20},
    {0,21},{1,21},{2,21},{3,21},{4,21},{5,21},{6,21},{7,21},
    {0,22},{1,22},{2,22},{3,22},{4,22},{5,22},{6,22},{7,22},
    {0,23},{1,23},{2,23},{3,23},{4,23},{5,23},{6,23},{7,23}
};

则误差为CCD_ 1。

到目前为止,我一直没能解决这个问题。。。任何帮助都将不胜感激。。。提前感谢!

您没有整数数组,您有整数数组的数组。所以你需要这样声明:

static int MapOut[][2] = { ... };

首先,所有数组都没有赋值运算符。所以你可能不会写例如

MapOut = { /*...*/ };

此外,我还不明白36x8与您展示的代码片段是如何相关的。

你是指二维数组吗?

在任何情况下,您对数组的初始化都是不正确的。

也许你想要一个整数对的数组,并能够在定义后进行赋值。如果是这样,那么您应该使用标准类std::array

例如

std::array<std::pair<int, int>, 36 * 8> a = { { 0, 0 }, { 1, 0 }, /*...*/ };

我敢打赌这是你的编译器。

上面的第二个例子(忽略拼写错误)在c中编译时出现警告,但在c++中失败。尝试http://www.compileonline.com/compile_c_online.php和http://www.compileonline.com/compile_cpp_online.php

您可能使用了一个接受上述内容的旧C++编译器,但找不到一个好的旧编译器选择。

很明显,正如其他人所指出的,代码有缺陷,但我只是在回答这样一个事实,即它不再编译了。

最新更新