通过友元函数设置值,该函数是另一个类的成员函数

时间:2017-05-20 09:20:26

标签: c++ friend

setwidth()是类Box的成员函数,它也是类Sbox的友元函数,它设置两个类的成员width的值。 / p>

班级width的{​​{1}}值未正确设置/传出。

Sbox

1 个答案:

答案 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是相同的作为外面的对象。

请在此处阅读:How to pass objects to functions in C++?