对象初始化问题

[复制链接]
 楼主| 秋天落叶 发表于 2012-5-12 09:33 | 显示全部楼层 |阅读模式
[code=C/C++][/code]
char *sa[]={"ebb","string","seires","gallow"};
list<char *> pch(sa,sa+4);
为什么可以让一个双重指针赋给一个普通指针呢,而不会报错呢

而下面的赋值语句是有明确错误的
char *e=sa;
这个在编译时,说:无法从“char *[4]”转换为“char *”

求解释
gxgclg 发表于 2012-5-12 09:46 | 显示全部楼层
list<char *> pch(sa,sa+3);//
楼主应该是理解错了list这个构造函数的意思了。
list(first,last)  
这个构造函数是说,list中的值,由first开始直至last所指的值进行初始化
dfsa 发表于 2012-5-12 10:02 | 显示全部楼层
list<char *> pch(sa,sa+4);调用了list的
template<class _Iter>
list(_Iter _First, _Iter _Last)这个构造函数,这里应该传2个迭代器,由于原生指针可以视为迭代器,所以调用可以成功。list里面存储的是char*,因此构造函数传的参数应该是指向char*的指针,即char**。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:落叶很美

138

主题

3044

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部