Я работаю над этим тестированием устройства. Я чувствую, что удаляю как сверло, так и аккумулятор, но, похоже, он не работает (батарея не может быть удалена, возможно). Могу ли я что-нибудь сделать для деструктора, чтобы справиться с этой проблемой?Как удалить объект, связанный с другим объектом в C++?
void test_rover::testDisconnectBattery() {
Drill* drill = new Drill();
drill->connectBattery(new Battery(10));
drill->disconnectBattery();
//CPPUNIT_ASSERT(drill->Connected()==false);
delete drill;
CPPUNIT_ASSERT(Object::getCount()==0);
}
Device.cpp (Устройство является основой сверла)
Device::Device() {
}
Device::Device(const Device& copy) {
}
Device::~Device() {
delete _battery;
}
void Device::connectBattery(Battery *b){
_battery = b;
}
void Device::disconnectBattery(){
_battery = NULL;
}
Battery.cpp
Battery::Battery(int power) {
_power = power;
}
Battery::Battery(const Battery& copy) {
}
Battery::~Battery() {
}
int Battery::Power(){
return _power;
}
Когда деструктор ('~ Устройство') вызывается,' _battery' является 'NULL', вам нужно« удалить »батарею, когда вы ее отключите или извне –
use std :: unique_ptr –
вы используете C++, почему вы не используете std :: shared_ptr или std :: unique_ptr, как он подходит? – Nandu