我有一个包含成员变量的类,这些成员变量是指向另一个类的指针
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
答案 0 :(得分:2)
您可以定义一个重载运算符,该运算符可以让您执行类似的操作
Widget w;
w = 4.0;
,并在内部将* width设置为4.0(显然需要检查以确保指针还不错)。如上所述,尽管如此,最好还是不要使用指针。
但是,您不能做的正是您所要求的,因为它需要重载operator =才能在指针和浮点数之间工作。参见https://isocpp.org/wiki/faq/intrinsic-types#intrinsics-and-operator-overloading