我有一个类,它有一个标记为显式的std :: string类型的转换运算符。这是班级
class MyClass {
public:
// methods ...
explicit operator std::string() const {
// convert to string ...
}
}
问题是当我在MyClass类型的变量上使用static_cast时,我得到错误“没有匹配转换为static_cast从'MyClass'到'std :: string aka ...”我在定义转换运算符时似乎有同样的问题对于任何自定义类型。是仅为转换为原始类型定义的显式修饰符,还是另一个编译器错误。
答案 0 :(得分:2)
这是一个例子
#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
答案 1 :(得分:0)
通过更新到最新版本的LLVM解决了问题,LLVM完全支持所有C ++ 11功能。