当前位置: 代码迷 >> C语言 >> C++ 隐式类型转化异常
  详细解决方案

C++ 隐式类型转化异常

热度:9117   发布时间:2013-02-26 00:00:00.0
C++ 隐式类型转化错误
class F{
public:
F(string name){}
};
int main()
{
 F f("hello");
}
编译出错

但如果构造函数改成 F(const char *name) 就变异通过
求助 大侠 给予解释

------解决方案--------------------------------------------------------
估计楼主是想把  char*直接当参数传入 string为参数的函数.

string隐式转换 是从 string --> const char *
但不能从 char* --> string  (在使用=号和构造的时候与此不同)


------解决方案--------------------------------------------------------
"hello"是const char *类型,不是string类型。

------解决方案--------------------------------------------------------
给"hello"分配的空间默认是常量数据区, 带有const 特性的,直接传给不带 const限定的参数,当然有问题了。string完全属于C++的范畴,对const的使用更加严格。如果是C,你可以 char *p = “hello”;或者是C++中的C,为了兼容C,也能通过。但是string完全属于C++,所以编译器要求更严格
  相关解决方案