【发布时间】:2014-12-12 20:05:44
【问题描述】:
我已经看到了一些与此相关的一些联系点的问题。但没有一个答案让我信服。我有以下课程:
class Foo
{
public:
void bar() const
{
wstring unicode_string = m_convertor.from_bytes(string("")); // 1
}
private:
std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> m_convertor;
};
此时它可以编译。但是如果我将Foo::bar() 更改为常量...
void bar() const
{
// ...
}
失败并出现错误:
... 4 个重载对 'this' 指针没有合法转换...
您可以在代码中的 1 点看到,我将一个临时对象传递给 from_bytes 函数,所以唯一可以改变的是它自己的 m_convertor 实例。
我做了以下事情:
void bar() const
{
std::wstring_convert<std::codecvt<wchar_t, char, std::mbstate_t>> convertor;
wstring unicode_string = convertor.from_bytes(string(""));
}
现在一切都编译好了,所以不用怀疑谁在改变。
现在我正在使用该函数的非常量版本,但想知道为什么会发生这种情况。
【问题讨论】: