c – 无法将’const char *’转换为std :: string :: c_str的’c
发布时间:2020-12-16 10:32:29 所属栏目:百科 来源:网络整理
导读:这给出了错误:无法从’const char *’转换为’char *’. class Mock{public: ... static void func(char **result) { *result = (resultsI++)-c_str(); }static std::vectorstd::string results;static std::vectorstd::string::iterator resultsI;};std::v
这给出了错误:无法从’const char *’转换为’char *’.
class Mock { public: ... static void func(char **result) { *result = (resultsI++)->c_str(); } static std::vector<std::string> results; static std::vector<std::string>::iterator resultsI; }; std::vector<std::string> Mock::results; std::vector<std::string>::iterator Mock::resultsI; 如何在不更改函数func的接口的情况下有效地消除此错误?该接口的实现者: void (func*)(char **result) 忘了在签名中使用const char **.我无法改变它. 记住这是一个模拟,我只在我的单元测试中使用. 解决方法
尝试:
*result = &(*resultsI++)[0]; 虽然这不能保证在C 11之前工作,但已知大多数或所有当前编译器都可以. 危险的是,如果函数试图改变字符串的长度,你可能会得到一些讨厌的错误.更改个别字符应该没问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |