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; }
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
09. januar 2006 - 21:09
#1
Den bliver også kaldt, men det sker efter system("PAUSE"); så du ser det måske ikke.
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å.
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
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.
09. januar 2006 - 21:20
#5
Jeg samler ikke på point.
09. januar 2006 - 21:20
#6
Aaaaah du er ikke blevet omvendt endnu :)
Kurser inden for grundlæggende programmering