C ++ - 重载'='以将十六进制值赋给对象

时间:2017-03-25 00:12:57

标签: c++ colors operator-overloading overloading

我正在尝试实现类似于颜色对象十六进制赋值的系统,例如:

Color color;
color = 0xffff00;

如果我理解正确,则运算符'='已经过载,因此它实际上将十六进制值存储在Color中的数据类型中。我真的不明白怎么做,但这就是我所拥有的: (假设Color将颜色存储在名为“data”的3字节typedef中)

Color operator=(const unsigned int& c) {
    Color color;
    color.data = c;
    return color;
}

这会给我我需要的东西吗?

2 个答案:

答案 0 :(得分:0)

我认为将它作为成员函数实现会更好,因此它可以修改对象而不是构造一个新对象并复制它。

class Color {
    ...
    public:
        void operator= (const unsigned int &c) {
            data = c;
        }
    ...
}

答案 1 :(得分:0)

你应该重载类的赋值运算符,也可能是构造函数,如下所示:

class Color
{
public:
    Color(): data(0) {}
    Color(unsigned i): data(i) {} // add an int constructor

    // add assignment operator
    Color& operator=(unsigned i) { data = i; return *this; }

private:
    unsigned data;
};

重载构造函数允许你像这样进行初始化:

Color c = 0x00FF00;

重载赋值运算符允许您在初始化后分配:

c = 0xFF00FF;