c – 在结构中的数组中的结构中初始化数组时出现问题

前端之家收集整理的这篇文章主要介绍了c – 在结构中的数组中的结构中初始化数组时出现问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的任务是删除一些编译器警告.我已经能够将问题归结为以下示例,我正在摸不着为什么它不起作用.我想我不知道如何在C中初始化东西.任何帮助,将不胜感激.

我像这样使用g:@H_403_3@g init_arr.cpp

这是代码.我想在Aisle pizza的所有桌子上初始化所有人:

// init_arr.cpp
#include <iostream>
#include <string>
#include <sstream>

using namespace std;


struct Person {
    int    id;
    string name;
    double money;
};


struct Table {
    Person tab[4];
};


struct Aisle {
    Table ais[3];
};

int main() {
    cout << "main function()" << endl;

    Aisle pizza =
        {
            {  // Table 0
                { 0,"Tom",100.0 },{ 1,"Mary",101.0 },{ 2,"Jane",103.0 },{ 3,"Joe",104.0 }
            },{  // Table 1
                { 0,{  // Table 2
                { 0,104.0 }
            }
        };

    return 0;
}

我认为上述方法可行,但我收到以下错误

g++ init_arr.cpp -std=gnu++0x
init_arr.cpp: In function ‘int main()’:
init_arr.cpp:49: error: too many initializers for ‘Table [3]’
init_arr.cpp:49: error: too many initializers for ‘Aisle’

解决方法

你错过了很多对括号.我添加了注释,以便更清楚地从哪个位开始.

把它放在一个句子中,你的问题是可以使用{1,2,3}初始化具有三个元素的数组,而包含数组作为其单个成员的结构是一个额外的层,因此必须使用{初始化{ {1,3}} – 外层是结构,内层是数组.

Aisle pizza =
    { // Aisle init
      { // Table ais[3] init
        {  // ais[0] init
         {  // Person tab[4] init
            { 0,104.0 }
         }
        },{  // ais[1] init
         {  // Person tab[4] init
            { 0,{  // ais[2] init
         {  // Person tab[4] init
            { 0,104.0 }
         }
        }
      }
    };
原文链接:https://www.f2er.com/c/119628.html

猜你在找的C&C++相关文章