指针和双精度之间的C ++赋值运算符

时间:2018-11-30 23:54:14

标签: c++

我有一个包含成员变量的类,这些成员变量是指向另一个类的指针

struct Unit {
    Unit();
    double value;
}

struct Widget {
    Widget();
    Unit *width;
}

Unit::Unit(){
    value = 0.0;
}

Widget::Widget(){
    width = new Unit();
}

我想重载赋值运算符,这样:

Widget w;
w.width = 4.0;

将小部件的width的{​​{1}}设置为4。我认为答案是在朋友功能中,但是我对它们并不足够了解。

为清楚起见,运算符重载与此等效:

value

1 个答案:

答案 0 :(得分:2)

您可以定义一个重载运算符,该运算符可以让您执行类似的操作

Widget w;
w = 4.0;

,并在内部将* width设置为4.0(显然需要检查以确保指针还不错)。如上所述,尽管如此,最好还是不要使用指针。

但是,您不能做的正是您所要求的,因为它需要重载operator =才能在指针和浮点数之间工作。参见https://isocpp.org/wiki/faq/intrinsic-types#intrinsics-and-operator-overloading