打印

对象初始化问题

[复制链接]
930|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋天落叶|  楼主 | 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

粉丝