Avatar billede akilleuz Nybegynder
06. februar 2015 - 11:12 Der er 3 kommentarer

Class Destructor Bliver ikke kladt?

Hej,

Jeg har et problem at min destructor ikke bliver kladt i min kode, jeg har paa fornemmelsen at det er fordi jeg har en virtual class og jeg mangler et bindeled mellem delete og selve classen:

Jeg har intet problem med at kalde funktionerne det hele "virker" undtagen naa jeg bruger delete. Der jeg soeger er et svar der kan forklare mig og hjaelpe mig med at faa kaldt min destructor saa de to buffer arrays blever slettet.

Se kode:

main.cpp:
TESTClass::~TESTClass(void)
{
    delete [] buffer1;
    delete [] buffer2;
    //"Print til fil"
}

void TESTClass::Func1()
{
    //Do something
}

main.h
class TESTClass: public TEST
{
public:
    TESTClass(void);   
    ~TESTClass(void);

    void Func1();
}

Base.cpp:
#pragma once

#include "Base.h"

Base.h:
class
class TEST {
public:
    virtual void Func1()=0;
}


Koden der kalder functionen: (koden er taget i smaa bider)

std::vector<TEST*> List;

tempPtr = new TESTClass();
List.push_back(std::move(tempPtr));

List.back()->Func1();

delete List[i];
Avatar billede lars31415 Nybegynder
06. februar 2015 - 11:26 #1
Jeg mener din destructor skal være virtuel
http://www.parashift.com/c++-faq/virtual-dtors.html
Avatar billede akilleuz Nybegynder
06. februar 2015 - 11:35 #2
Jwg har forsoegt mig med at have virtual foran men uden held.
Avatar billede akilleuz Nybegynder
06. februar 2015 - 12:45 #3
Lars smid et svar, du havde delvist ret.

I min Base.cpp: kode manglede jeg foelgede
#pragma once

#include "Base.h"

TEST::~TEST()
{
  //Do nothing
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester