【发布时间】:2018-04-04 06:09:32
【问题描述】:
我尝试编译以下代码:
vector<char*> art = { "a","an","the" };
但收到错误消息:
error C2440: 'initializing': cannot convert from 'initializer list' to 'std::vector<char *,std::allocator<_Ty>>'
1> with
1> [
1> _Ty=char *
1> ]
1> note: No constructor could take the source type, or constructor overload resolution was ambiguous
如果我像这样将元素类型更改为“const char *”:
vector<const char*> art = { "a","an","the" };
可以编译。谁能告诉我原因吗?非常感谢。
【问题讨论】:
-
字符串文字是
const char*,而不是char*。有足够的理由吗? -
的另一个变体“为什么我不能用字符串文字初始化
char*?”。令人印象深刻。 -
字符串文字是只读的,语言有某种静态断言你没有试图改变一个的方式是有意义的。
标签: c++