我在一个Dialog Box类中定义一个字符串数组:
class CLoginDlg : public CDialog
{
public:
    ......
    afx_msg void OnBnClickedOk();    char *rights_str[] = { 
"#EMPLOYEE_INFO#",
"#PUNISH_AND_AWARD#",
"#POSITION_CHANGE#",
"#BASIC_MAT_INFO#",
"#MAT_DIAPATCH#",
"#MAT_RETURN#",
"#SALARY_ACCESS#",
"#QUERY_ACCESS#",
"#CONTRACT_ACCESS#",
"#SYSTEM_ACCESS#",
"#USER_CHANGE_RIGHTS#"};老是语法错:"{"前面有意外标记;跳过明显的函数体.这是什么意思?难道类中不能定义字符串数组吗?

解决方案 »

  1.   

    说得有道理.但问题是如何初始化?我在类中定义
    char **rights_str;
    然后在构造函数中,
    rights_str = { 
    "#EMPLOYEE_INFO#",
    "#PUNISH_AND_AWARD#",
    "#POSITION_CHANGE#",
    "#BASIC_MAT_INFO#",
    "#MAT_DIAPATCH#",
    "#MAT_RETURN#",
    "#SALARY_ACCESS#",
    "#QUERY_ACCESS#",
    "#CONTRACT_ACCESS#",
    "#SYSTEM_ACCESS#",
    "#USER_CHANGE_RIGHTS#"};
    编译器还是说"语法错"{"".
      

  2.   

    搂住看来只好用static来定义,像下面这样class CLoginDlg:
    {
    static char* rights_str[];
    }char *CLoginDlg::rights_str[] = { 
    "#EMPLOYEE_INFO#",
    "#PUNISH_AND_AWARD#",
    "#POSITION_CHANGE#",
    "#BASIC_MAT_INFO#",
    "#MAT_DIAPATCH#",
    "#MAT_RETURN#",
    "#SALARY_ACCESS#",
    "#QUERY_ACCESS#",
    "#CONTRACT_ACCESS#",
    "#SYSTEM_ACCESS#",
    "#USER_CHANGE_RIGHTS#"};
      

  3.   

    可以单个付值,虽然苯但是可行如声明char **rights_str;然后在构造函数中,
    rights_str[0] ="#EMPLOYEE_INFO#";
    具体为什么必须这样,我也不是很清楚
      

  4.   

    C++还是C语言,都是不允许这样赋值的。rights_str = { 
    "#EMPLOYEE_INFO#",
    "#PUNISH_AND_AWARD#",
    "#POSITION_CHANGE#",
    "#BASIC_MAT_INFO#",
    "#MAT_DIAPATCH#",
    "#MAT_RETURN#",
    "#SALARY_ACCESS#",
    "#QUERY_ACCESS#",
    "#CONTRACT_ACCESS#",
    "#SYSTEM_ACCESS#",
    "#USER_CHANGE_RIGHTS#"};char* p = "XXX"; 可以
    char p[] = {X,X,X};可以
    char p[][32] = {{""},{""},{""}}可以所以不用想,其实语言就不支持。
      

  5.   

    C++中 下面这样是可以的 前提是变量为函数的局部变量char *rights_str[] = { 
    "#EMPLOYEE_INFO#",
    "#PUNISH_AND_AWARD#",
    "#POSITION_CHANGE#",
    "#BASIC_MAT_INFO#",
    "#MAT_DIAPATCH#",
    "#MAT_RETURN#",
    "#SALARY_ACCESS#",
    "#QUERY_ACCESS#",
    "#CONTRACT_ACCESS#",
    "#SYSTEM_ACCESS#",
    "#USER_CHANGE_RIGHTS#"};