【问题标题】:How to Initialise 2D char array after being declared in header在标题中声明后如何初始化二维字符数组
【发布时间】:2014-02-16 14:39:44
【问题描述】:

我目前正在开展一个项目,该项目需要从二维数组中读取单个字符以确定相应网格中的内容。

我将二维字符数组声明如下:

class GridManager{
    static char level1[5][6];
    static char level2[5][6];
    static char level3[6][10];
};

我在 cpp 文件中初始化它们,如下所示:

char GridManager::level1[5][6] =
{{'O','P','T','T','E','N'},
    {'W','M','N','W','M','P'},
    {'M','T','P','M','P','R'},
    {'O','N','M','P','M','R'},
    {'L','E','E','E','E','N'}};
char GridManager::level2[5][6] = 
{{'O','E','E','E','T','P'},
    {'W','M','B','K','W','R'},
    {'L','B','P','B','M','R'},
    {'M','P','N','T','E','N'},
    {'L','N','B','B','B','R'}};
char GridManager::level3[6][10]= 
{{'O','T','T','T','T','T','T','T','P','R'}
 {'O','T','T','T','T','B','P','R','R','R'}
 {'L','O','T','T','P','P','N','R','P','R'}
 {'W','W','T','L','K','K','K','K','R','R'}
 {'W','W','R','K','T','E','E','O','P','R'}
 {'W','B','N','N','B','B','B','N','B','N'}};

但是它不断在第二行的第一个 { 上抛出一个错误,说它期待一个 }。 我也尝试在 .cpp 文件中将它们初始化为静态,但这并没有什么不同。 任何和所有的帮助将不胜感激。 如果您需要更多信息/代码,请随时询问 问候, 阿兹凯

【问题讨论】:

    标签: c++ arrays multidimensional-array compiler-errors syntax-error


    【解决方案1】:

    您忘记在定义中放置逗号

    char GridManager::level3[6][10]= 
    {{'O','T','T','T','T','T','T','T','P','R'}
     {'O','T','T','T','T','B','P','R','R','R'}
     {'L','O','T','T','P','P','N','R','P','R'}
     {'W','W','T','L','K','K','K','K','R','R'}
     {'W','W','R','K','T','E','E','O','P','R'}
     {'W','B','N','N','B','B','B','N','B','N'}};
    

    应该是

    char GridManager::level3[6][10]= 
    {{'O','T','T','T','T','T','T','T','P','R'},
     {'O','T','T','T','T','B','P','R','R','R'},
     {'L','O','T','T','P','P','N','R','P','R'},
     {'W','W','T','L','K','K','K','K','R','R'},
     {'W','W','R','K','T','E','E','O','P','R'},
     {'W','B','N','N','B','B','B','N','B','N'}};
    

    【讨论】:

    • 我一开始就做了这个改变。它仍然在所有三个数组中抛出错误。经过几次清理和重建后,我不得不重新启动视觉工作室,它现在奇迹般地工作了。谢谢:)
    【解决方案2】:

    这看起来不错,但是您在最后一个数组的定义中缺少逗号,如下所示:

    char GridManager::level3[6][10]= 
    {{'O','T','T','T','T','T','T','T','P','R'}, // <-
     {'O','T','T','T','T','B','P','R','R','R'}, // <-
     {'L','O','T','T','P','P','N','R','P','R'}, // <- HERE
     {'W','W','T','L','K','K','K','K','R','R'}, // <-
     {'W','W','R','K','T','E','E','O','P','R'}, // <-
     {'W','B','N','N','B','B','B','N','B','N'}};
    

    【讨论】:

    • 你是最绝对正确的。我无意中忘记添加它们,但这个错误出现在所有 3 个数组中。
    • 该死!您使用的是哪个平台和编译器版本?您能否也发布编译器诊断输出?这一切对我来说都很好(XCode / apple llvm 5.0)
    • 我正在使用带有 x32 调试器的 Visual Studio 2010。我不确定在哪个窗口中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多