我有一个类,它有一个用于标记为显式的 std::string 类型的转换运算符。这是类
class MyClass {
public:
// methods ...
explicit operator std::string() const {
// convert to string ...
}
}
问题是当我在类型为 MyClass 的变量上使用 static_cast 时,我得到错误“No matching conversion for static_cast from 'MyClass' to 'std::string aka …” 我在定义转换运算符时似乎遇到了同样的问题对于任何自定义类型。 explicit 修饰符是仅为转换为原始类型而定义的,还是另一个编译器错误。
最佳答案
举个例子
#include <iostream>
#include <string>
class MyClass {
public:
// methods ...
explicit operator std::string() const {
return "Hello World";
}
};
int main()
{
MyClass obj;
std::cout << static_cast<std::string>( obj ) << std::endl;
return 0;
}
输出是
Hello World
关于c++ - 为什么显式运算符 std::string 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209453/