(1).h文件里这样初始化string[]为什么不对?
std::string sDiceNumberName[11] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};(2).h
std::string sDiceNumberName[11];.cpp
sDiceNumberName[11] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};为什么都不对?

解决方案 »

  1.   

    h文件如果你不包含就不会错出错的原因是C/C++中对于1个变量或函数有声明和实现2个部分组成,你的h文件中所有写法都是他的实例实现,而非声明,实例实现应该放在cpp中。正确的声明语句是:extern std::string sDiceNumberName[11];
    -----------------------------------------------
    MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
      

  2.   

    当然不对,
    初始化操作都是在cpp文件里面进行的,
    如果说头文件里面真要进行初始化,
    只有枚举常量有这个权力
      

  3.   

    如果你这个后面不会修改,就作为const定义;或者,作为static定义,在.h文件中声明,.cpp文件中初始化。
      

  4.   

    数组只能在声明定义同时才能直接初始化,所以你在CPP中不能初始化;
    类的.h中的成员变量只是声明,不能定义。
      

  5.   

    .h
    std::string sDiceNumberName[11];.cpp
    sDiceNumberName[11] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};这个怎么不行呢?
      

  6.   

    .h
    std::string sDiceNumberName[11];.cpp
    sDiceNumberName[11] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};这个怎么不行呢?
      

  7.   

    要extern std::string sDiceNumberName[11];才是全局的变量
      

  8.   

    .h
    std::string sDiceNumberName[11];cpp
    sDiceNumberName[11] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};
    改为:
    .h
    std::string sDiceNumberName[];cpp
    sDiceNumberName[] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};
      

  9.   

    要extern std::string sDiceNumberName[11];才是全局的变量
    ----
    应该不是这个原因
      

  10.   

    to:jkgl548() 
    还是不正确
      

  11.   

    哦,刚才说的数组是作为类的Static成员变量赋值的。
    如果是非static成员变量,就直接一个一个赋值吧。
    .h
    std::string sDiceNumberName[11] ;
    .cpp
    sDiceNumberName[0] = "";
    sDiceNumberName[1] = "";
    ...
      

  12.   

    string 变量好像不支持这么做。
      

  13.   

    定义一个常量字符串数组或者一坨常量字符串先,
    再在cpp中一个循环初始化string对象。const char NUMBER[][16] = {"two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"};for (int i = 0; i < 11; i++)
    {
    sDiceNumberName[i] = NUMBER[i];
    }