加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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之前工作,但已知大多数或所有当前编译器都可以.

危险的是,如果函数试图改变字符串的长度,你可能会得到一些讨厌的错误.更改个别字符应该没问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读