Avatar billede mxs Nybegynder
09. januar 2006 - 21:02 Der er 5 kommentarer og
1 løsning

Hvorfor blive min deconstructor ikke kaldt?

Hej jeg sidder med følgende kode og undre mig over at min deconstructor ikke bliver kaldt :(

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define maxSize 11


template<class E> class stack
{
public:
stack()
{
  element = new E[maxSize];
  i = 0;
}

~stack()
{
  cout << "decon"<<endl;
  delete[] element;
}
void add(E elem);
void pop();
E print();

private:
E* element;
int i;
};

template<class E>
E stack<E>::print()
{
for(int i=0; i<= maxSize; i++)
{
  cout << "element["<<i<<"]" << element[i] << endl;
}
}

template<class E>
void stack<E>::add(E elem)
{

if(i == maxSize)
{
  cout <<"max size paa " << maxSize << "er naaet"<<endl;
}else
{
  element[i] = elem;
  i++;
}

}

int main()
{

stack<int> i_stack;
i_stack.add(2);
i_stack.add(5);
i_stack.add(6);
i_stack.print();

  system("PAUSE");
  return 0;
}
Avatar billede bertelbrander Novice
09. januar 2006 - 21:09 #1
Den bliver også kaldt, men det sker efter system("PAUSE"); så du ser det måske ikke.
Avatar billede mxs Nybegynder
09. januar 2006 - 21:10 #2
Kedeligt. Kunne heller ikke lige forstå det. Plejer at køre fint på min Linux box når jeg hacker, men jeg må nok indse at Windows platformen behandler det anderledes?! Men jeg kan godt være sikker på at mit array bliver deallokoheret så.
Avatar billede bertelbrander Novice
09. januar 2006 - 21:13 #3
Du kan køre programmet fra kommandolinien, eller lave main() om til:

int main()
{
  {
      stack<int> i_stack;
      i_stack.add(2);
      i_stack.add(5);
      i_stack.add(6);
      i_stack.print();
  }
  system("PAUSE");
  return 0;
}

Så kan du se at den faktisk skriver decon
Avatar billede mxs Nybegynder
09. januar 2006 - 21:18 #4
tak for det bertel :) Var lige ved at skide i bukserne da jeg ikke kunne finde decon ;>
smid et svar og du skal blive rig.
Avatar billede bertelbrander Novice
09. januar 2006 - 21:20 #5
Jeg samler ikke på point.
Avatar billede mxs Nybegynder
09. januar 2006 - 21:20 #6
Aaaaah du er ikke blevet omvendt endnu :)
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