2014-11-20 46 views
1

我打破了一个问题,我已经尝试过在下面的问题来解释here错误与转换运算符和的std :: string类中的

#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与上面的代码没有问题。

回答

1

您可以使用explicit conversion

explicit operator std::string() 
~~~~~~~ 
{ 
    return std::string("Huhuhu"); 
} 
相关问题