在学习运算符重载时遇到了一个有意思的问题
本人纯小白
以下代码中我重载了转换运算符int和string,代码如下,但是报了一个错误
#include <iostream>
using namespace std;
class test{
private:
int a=10;
string str="hello";
public:
int get_a()
{
return a;
}
//类型转换运算符重载
operator int()
{
return this->a;
}
operator string()
{
return this->str;
}
};
int main()
{
test t1;
int num;
num=t1;//希望的结果是将t1中的a赋值给num
string str;
str=t1;//希望的结果是将t1中的str赋值给main函数中的str
//str=(string)t1;
cout<<str<<endl;
// cout num<<endl;
return 0;
}
错误如下
以下三种写法,一种报错,其余两种可以正常执行,所以怀疑和string不是基本的数据类型有关
这里将int转换重载注释掉,发现问题解决,代码可正常执行
可正常执行
怀疑是编译器在编译时,string内部产生了二义性的问题,希望有大佬可以详细解释