Varför kan jag inte radera objekt som inte är nullptr i C++?
Jag har ett fält i min klass som heter
QLineSeries* pwm_series[8];
När jag skapar ett objekt från min klass så initialiserar jag fältet med nullptr.
for(uint8_t i = 0; i < 8; i++)
pwm_series[i] = nullptr;
När jag ska initialisera fältet flera gånger, så måste jag radera nuvarande objekt.
for(uint8_t i = 0; i < 8; i++){
if(pwm_series[i] != nullptr)
delete pwm_series[i];
pwm_series[i] = new QLineSeries();
}
Men det styper här när jag ska sätta in objektet. Det krashar här för att pwm_series[i] är null.
chart->addSeries(pwm_series[0]);
Men om jag inte raderar pwm_series[i]. Då fungerar det riktigt bra. Alltså betyder det att pwm_series[i] är fortfarande null.
for(uint8_t i = 0; i < 8; i++){
if(pwm_series[i] != nullptr)
; //delete pwm_series[i];
pwm_series[i] = new QLineSeries();
}
Notera att jag FÖRST anropar att jag skapar objekten, sedan så implementerar jag dom.
void Logging_tab::add_series_to_chart(){
chart->removeAllSeries();
create_series();
/* PWM */
if(ui->enable_pwm0_checkBox->isChecked())
chart->addSeries(pwm_series[0]);
if(ui->enable_pwm1_checkBox->isChecked())
chart->addSeries(pwm_series[1]);
if(ui->enable_pwm2_checkBox->isChecked())
chart->addSeries(pwm_series[2]);
Där create_series(); ser ut så här
void Logging_tab::create_series(){
for(uint8_t i = 0; i < 8; i++){
if(pwm_series[i] != nullptr)
delete pwm_series[i];
pwm_series[i] = new QLineSeries();
}
Så vad gör jag för fel här?
Varför blir den nullptr trots att jag har satt "new" till objektet?
Notera att det är QT ramverket jag håller på med.