Visual Studio C ++无法将文字字符串参数识别为const字符串引用

时间:2013-06-21 02:50:26

标签: c++ .net string arrays type-mismatch

我有一个C ++类,其构造函数定义如下。

SomeClass( const string & input );

我有一些客户端代码,我认为应该隐式使用这个构造函数,如下所示。

SomeClass sc;
sc = "sstr";

但是我收到以下编译错误。

//Error: no operator "=" matches these operands, 
//operand types are: Fraction = const char[4]

如果我将SomeClass构造函数更改为以下内容,编译器错误将消失。

SomeClass( const char * input );

我正在使用Visual Studio 11和.NET 4.5。

显然,编译器不会将文字字符数组视为字符串。

这是预期的行为吗?有什么我想念的吗?

理想情况下,我期望的是编译器知道字符串也可以是字符数组,但我不确定。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您正在尝试

 SomeClass sc;  // calls sc default constructor
 sc = "sstr";   // calls SomeClass::operator=

相反尝试这个

 SomeClass sc("sstr"); // calls SomeClass::SomeClass(const string & input)