分配给作为struct成员的数组

时间:2014-03-06 05:20:17

标签: c++ arrays struct

这个问题可能重复。但我再次问它,因为那里提供的解决方案dint帮助我编译代码错误。

我有以下代码段

    #include<stdlib.h>

    using namespace std;

    void initgrid();

    struct gridblock
    {
        bool occ;
        double col[3];
        double trans[3];
    }grid[10][19];

    void initgrid()
    {
        grid[0][0].occ=false;
        grid[0][0].trans={-23.0,0.0,-24.0};
        ....
    }

    int main(int argc, char **argv)
    {
        initgrid();
        return 0;
    }

当我使用g++ <filename>.cpp -o test

编译上述代码段时

我看到以下警告后出现错误

enter image description here

我正在寻找解决方案来解决这个问题。我尝试过initializer_list和memcpy,但是这个dint工作。第17行是grid[0][0].trans={-23.0,0.0,-24.0}

2 个答案:

答案 0 :(得分:-1)

好的,首先你的初始化是完全错误的!其次,您的struct实例声明在哪里?第三,你缺少几个分号以关闭语句,接下来你正在访问你的数组错误,请查看我的代码广告工作。

struct gridblock
{
    bool occ;
    double col[3];
    double trans[3];
}grid[10][19];

void initgrid(gridblock& grid[10][19])
{
    grid[0][0].trans[0] = 3.3;
    grid[0][0].trans[1] = 5.1;
    grid[0][0].trans[2] = 7.0;
    grid[0][0].occ = false;
    ....
}

int main(int argc, char **argv)
{
    gridblock grid;    

    initgrid(grid);
    return 0;
}

我还建议您阅读一本初学者C ++书籍来学习这些基本概念,我感觉你已经跳到了快速结构的方式!

答案 1 :(得分:-1)

问题是您尚未启用C ++ 11编译器开关。这种能力是新的。您告诉您启用开关的警告。更改代码无济于事。您必须更改编译器的配置。