Меня часто беспокоит правильность, и это, кажется, не исключение.Пожалуйста, сообщите мне, почему следующий код не компилируется:
class string_token_stream
{
public:
typedef wchar_t* string_type;
string_token_stream(const string_type input_string)
: _input_string(input_string)
{
}
private:
const string_type _input_string;
};
int main(int argc, char **argv)
{
const wchar_t *str = get_a_string_somewhere();
string_token_stream sts(str);
// ^------ Compile-time error C2664.
return 0;
}
Приведена ошибка:
error C2664: 'string_token_stream::string_token_stream(const string_token_stream::string_type)' : cannot convert parameter 1 from 'const wchar_t *' to 'const string_token_stream::string_type'
1> Conversion loses qualifiers
Я компилирую в Visual C ++ 2010 Express.Дополнительные параметры компиляции / компоновщика доступны по запросу.