![](/img/trans.png)
[英]Using member access operator (.) to initialize char array in stractures
[英]Initialize char* at the time of declaration using new operator
C++ 代碼
char *ptr=new char("char_pointer_initialization");
投擲
error Invalid conversion from 'const char*' to 'char' [-fpermissive]
我該如何解決?
線
char *ptr=new char("char_pointer_initialization");
嘗試分配單個char
並使用const char*
對其進行初始化,因此出現錯誤消息。
不像沒有new
的聲明
char arr[] = "char_pointer_initialization";
使用new
對char
數組使用內聯初始化的唯一方法是編寫
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()
函數。
我建議你閱讀新的表達方式。 如果你有類似的東西
new type(value)
這意味着
在你的情況下,你有
new char("char_pointer_initialization");
所以你試圖分配一個單一的字符並用“char_pointer_initialization”初始化它,它是一個指向 const char 的指針。 這就是為什么您invalid conversion from cost char* to char
錯誤的invalid conversion from cost char* to char
。
除了使用 std::string 之外,要解決您的問題,您還需要使用 operator new ( new []
) 的數組版本,然后復制字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.