这给出了错误:无法从'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;
Run Code Online (Sandbox Code Playgroud)
如何在不更改函数func的接口的情况下有效地消除此错误?该接口的实现者:
void (func*)(char **result)
Run Code Online (Sandbox Code Playgroud)
忘了在签名中使用const char**.我无法改变它.
记住这是一个模拟,我只在我的单元测试中使用.
尝试:
*result = &(*resultsI++)[0];
Run Code Online (Sandbox Code Playgroud)
虽然这不能保证在C++ 11之前工作,但是在大多数或所有当前编译器上都可以正常工作.
危险的是,如果函数试图改变字符串的长度,你可能会得到一些讨厌的错误.更改个别字符应该没问题.
归档时间: |
|
查看次数: |
12888 次 |
最近记录: |