这个问题可能重复。但我再次问它,因为那里提供的解决方案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
我看到以下警告后出现错误
我正在寻找解决方案来解决这个问题。我尝试过initializer_list和memcpy,但是这个dint工作。第17行是grid[0][0].trans={-23.0,0.0,-24.0}
答案 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编译器开关。这种能力是新的。您告诉您启用开关的警告。更改代码无济于事。您必须更改编译器的配置。