C ++模糊转换类型

时间:2015-01-05 11:05:03

标签: c++

假设类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();
 }

0 个答案:

没有答案