c++ - Visual Studio C++ 无法将文字字符串参数识别为常量字符串引用

标签 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。

很明显,编译器没有将文字 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/

相关文章:

.net - 您如何更改.Net页面将在其下运行的扩展名?

java - 如何在 Scala 中获取字符串的最后一个元音及其后面的任何单词?

java - 在 Java 中将字符串转换为 Clob

c++ - 如何优先使用虚方法覆盖和继承

c++ - 标准对 char 数组作为模板参数有什么看法?

c++ - list 和 forward_list 性能之间的区别?

c++ - C++ 中的类型转换

c# - 无重叠捕获

.net - 读取 double 不是线程安全的吗?

linux - 如何附加冒号零,:0 onto the end of an IP address string?