我正在尝试创建一些可以连接“电池”的“设备”。 设备应该能够使用 _drill.Connect(_battery);
将电池连接到自身设备运行时电池应该耗尽( _drill.Operate()),但我发现电池的值没有变化。
我做了一些测试,我想我已经发现我正在创建一个我正在传递给Connect()方法的电池副本。我不太确定指针/传递引用是如何在C ++中起作用的,我发现自己有点迷失看样例。
我的连接方法;
void Device::Connect(Battery& battery)
{
_battery = battery;
}
我的操作功能;
void Drill::Operate()
{
cout << "VRMM! VRMM!" << endl;
//Battery drain by 10 units
this->getBattery().Drain(10);
}
我不会解释行为,而是附上我的测试代码和输出。
Battery _battery;
Drill _drill;
cout << _battery.GetCharge() << endl;
_drill.Connect(_battery);
cout << "Battery charge: " << _battery.GetCharge() << " | " << _drill.getBattery().GetCharge() << endl;
_drill.SafetyToggle();
_drill.Operate();
cout << "Battery charge: " << _battery.GetCharge() << " | " << _drill.getBattery().GetCharge() << endl;
_battery.Drain(20);
cout << "Battery charge: " << _battery.GetCharge() << " | " << _drill.getBattery().GetCharge() << endl;
_drill.getBattery().Drain(20);
cout << "Battery charge: " << _battery.GetCharge() << " | " << _drill.getBattery().GetCharge() << endl;
输出;
30
Battery charge: 30 | 30
Safety disabled.
VRMM! VRMM!
Battery Charge: 30 | 30
Battery Charge: 10 | 30
Battery Charge: 10 | 30