這給出了錯誤:無法從'const char *'轉換爲'char *'。不能從'const char *'轉換爲'char *'爲std :: string :: c_str
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 **。我無法改變它。
記住這是一個模擬,我只用於我的單元測試。
猜你必須複製而不是使用'c_str()'。 – chris
你可以(但不應該)扔掉常量(const_cast((resultsI ++) - > c_str());) –
Ryan Guthrie:爲什麼我不應該這樣做? – Baz