我在以下问题中解决了我已经尝试解释here的问题:
#include <iostream>
#include <string>
class atest
{
public:
operator std::string()
{
return std::string("Huhuhu");
}
operator int()
{
return 42;
}
};
int main(int argc, char* argv[])
{
atest tst;
std::string astr;
astr=tst;
int i=0;
i=tst;
return 0;
}
std :: string似乎有几个甚至覆盖int的构造函数。我有一个类需要转换为std :: string,但也是一个整数类型。由于assign(=)运算符不能在类定义之外覆盖,我不知道如何运行上述程序。 这是糟糕的设计,但值得注意的是,VS2013对上述代码没有任何问题。
答案 0 :(得分:1)
您可以使用explicit conversion
explicit operator std::string()
~~~~~~~
{
return std::string("Huhuhu");
}