![](/img/trans.png)
[英]invalid operands of types 'const char*' and const char[4]' to binary 'operator+'
[英]Invalid operands of types ‘const char [8]’ and ‘const char*’ to binary ‘operator+
receiver->get_identifier().c_str()
返回const char*
,而不是std::string
,因此operator+
無法插入(它的一個參數必須是std::string
)。 刪除c_str()
並在最后使用std::string::c_str()
應該可以解決問題
fopen(("client." + receiver->get_identifier() + ".vol").c_str(), "a+");
這是因為您將擁有const char*
以及std::string
,並且operator+
將起作用。
如果您可能想知道為什么不能為const char*
定義operator+
,那是因為C ++不允許對基本類型進行運算符重載。 至少一個參數必須是用戶定義的類型。
嘗試將第一個參數更改為
(string("client.") + receiver->get_identifier() + ".vol").c_str()
這將添加帶有C樣式字符串的std::string
對象, 這可以完成 ,並且僅在末尾使用字符指針(通過.c_str()
)。 您的代碼現在嘗試添加C樣式字符串,這是不可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.