假设类obj有三个构造函数,默认构造函数和一个使用字符串作为参数而另一个作为unsigned int。 为什么编译器告诉我表达式必须具有这种情况的类类型
obj A("1548"),B(19);
(A + "10").PrintMe();
并告诉我,在这种情况下,运算符+有4次重载,具有类似的转换
(A + 10).PrintMe();//even if i remove these overload he will turn the A into an int.
我的班级也包含转换运算符,如:
operator int();
operator double();
operator unsigned int();
唯一有效的解决方案是:
(A + (obj)"99").PrintMe();
(A + (obj)99).PrintMe();
但是我希望编译器为我做的工作..
我班级的简化版:
class obj: public mother
{
public:
obj();
obj(string);
obj(unsigned int);
obj(const obj &);
~obj();
void PrintMe();
obj operator=( obj);
obj operator=(unsigned int );
friend obj operator+(obj,obj);
obj operator+=(obj);
obj operator*(obj);
obj operator*=(obj);
operator int();
operator double();
operator unsigned int();
}