c ++代码
char *ptr=new char("char_pointer_initialization");
抛出
error Invalid conversion from 'const char*' to 'char' [-fpermissive]
我该如何解决?
答案 0 :(得分:3)
该行
char *ptr=new char("char_pointer_initialization");
尝试分配单个char
并使用const char*
对其进行初始化,从而显示错误消息。
与没有new
char arr[] = "char_pointer_initialization";
使用char
对new
数组进行内联初始化的唯一方法是编写
char *ptr=new char[40]{ 'c', 'h', 'a', 'r', '_', 'p', ..., '\0' };
我建议改用std::string
,这样你就可以简单地写
std::string s = "char_pointer_initialization";
如果您需要const char*
,则可以使用std::string::c_str()
功能。
答案 1 :(得分:0)
我建议你阅读有关新表达的内容。如果您有类似
的内容new type(value)
这意味着
在你的情况下,你有
new char("char_pointer_initialization");
所以你试图分配一个char并用" char_pointer_initialization"初始化它。这是一个指向const char的指针。这就是你解决invalid conversion from cost char* to char
错误的原因。
除了使用std :: string之外,为了解决您的问题,您需要使用operator new(new []
)的数组版本,然后复制字符串。