我有一个 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。
很明显,编译器没有将文字 char 数组视为字符串。
这是预期的行为吗?有什么我想念的吗?
理想情况下,也是我所期望的,编译器知道字符串也可以是字符数组,但我不确定。
如有任何帮助,我们将不胜感激。
最佳答案
你正在尝试做
SomeClass sc; // calls sc default constructor
sc = "sstr"; // calls SomeClass::operator=
试试这个
SomeClass sc("sstr"); // calls SomeClass::SomeClass(const string & input)
关于c++ - Visual Studio C++ 无法将文字字符串参数识别为常量字符串引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226970/