结构体数组初始化问题(简单)

wolfzxq 2005-11-21 11:04:21
在VC中编写C++程序,以下代码出错,百思不得其解:
typedef struct STYLE{
char left;
string right;
}RULE;

RULE rule[6]= {
{'E',"E+T"},
{'E',"T"},
{'T',"T*F"},
{'T',"F"},
{'F',"(E)"},
{'F',"*"}
};

error C2440: 'initializing' : cannot convert from 'const char' to 'struct STYLE'
No constructor could take the source type, or constructor overload resolution was ambiguous
J:\VC Project\SLR1\slr.cpp(60) : error C2440: 'initializing' : cannot convert from 'char [4]' to 'struct STYLE'
No constructor could take the source type, or constructor overload resolution was ambiguous
是不是不能这样初始化结构数组?
...全文
913 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qfeng_zhao 2005-11-23
  • 打赏
  • 举报
回复
RULE rule[6]= {
{'E',string("E+T")},
{'E',string("T")},
{'T',string("T*F")},
{'T',string(""F")},
{'F',string("(E)")},
{'F',string("*")}
};
试试??
wolfzxq 2005-11-23
  • 打赏
  • 举报
回复
除了这样外,就没有别的方法了吗?
tianyanzjq 2005-11-22
  • 打赏
  • 举报
回复
我觉得主要原因是因为“E+T”这是一个字符串常量,在C++中是作为常量字符数组来建立的!建议可以定义一个构造函数STYLE(char ch,const string &str){left=ch;right=str;},具体方法如楼上所用,我试过了,程序是对的!
tsst 2005-11-22
  • 打赏
  • 举报
回复
我想应该是string right;的问题!建议看一下有关string类型的说明
lzp229 2005-11-21
  • 打赏
  • 举报
回复
#include "stdio.h"
typedef struct STYLE{
char left;
char * right;
}RULE;
main()
{
RULE rule[6]= {
{'E',"asdf"},
{'E',"sadf"},
{'T',"sdfs"},
{'T',"gdhf"},
{'F',"sdf"},
{'F',"dsgdf"}
};
printf("%s",rule[1].right);
}
应该是 string right;句的问题。我这么初始化可以的,string偶不清楚,c++里面的不太会。
goalcn 2005-11-21
  • 打赏
  • 举报
回复
楼上的和类基本没区别了
PMsg 2005-11-21
  • 打赏
  • 举报
回复
你数组不是1维的
还有你定义的RULE结构也有问题没法初始化数组啊。。
xiaocai0001 2005-11-21
  • 打赏
  • 举报
回复
用下面这个试试

#include <string>
#include <iostream>

typedef struct STYLE{
char left;
std::string right;
STYLE(char ch, const std::string &str)
{
left = ch;
right = str;
}
STYLE(){}
}RULE;

int main()
{
RULE rule[6]= {
STYLE('E',"E+T"),
STYLE('E',"T"),
STYLE('T',"T*F"),
STYLE('T',"F"),
STYLE('F',"(E)"),
STYLE('F',"*")
};
std::cout<<rule[2].right<<std::endl;
return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧