setwidth()
是类Box
的成员函数,它也是类Sbox
的友元函数,它设置两个类的成员width
的值。 / p>
班级width
的{{1}}值未正确设置/传出。
Sbox
答案 0 :(得分:1)
您需要通过引用传递Sbox。将&符添加到这三行。
void setwidth(Sbox& sbox,double wid);
friend void Box::setwidth(Sbox& sbox,double wid);
void Box::setwidth(Sbox& sbox,double wid)
您正在通过值sbox
传递,这意味着副本可以在setwidth
内使用。然后,您的代码会更改sbox
副本的宽度,但副本会在setwidth
结束时销毁,并且函数外部的原始sbox
保持不变。
添加&
意味着Sbox
参数通过引用传递,这意味着永远不会创建副本,因此sbox
内的setwidth
是相同的作为外面的对象。