PDA

Visualizza la versione completa : [C++] Classi, costruttori e distruttori


drinu
04-11-2006, 18:08
ciao a tutti, sto guardando le classi e in particolare i costruttori e i distruttori.
ho copiato pari pari questo codice dalla guida ma mi da errore proprio sul costruttore.
perch? grazie





#include <iostream>
using namespace std;

//dichiarazione della classe
class myclass {
public:
int x;

//dichiara un costruttore e un distruttore
myclass(); //costruttore
~myclass(); //distruttore
}

// implementa il costruttore di myclass
myclass::myclass() { //mi da errore in questa linea
x=10;
}
// implementa il distruttore di myclass
myclass::~myclass() {
cout<<"sto distruggendo...\n";
}

int main() {
myclass ob1; //crea un oggetto myclass
myclass ob2; //crea un'altro oggetto myclass

cout<<ob1.x<<" "<<ob2.x<<"\n";

system("pause");
return 0;
}


(uso dev c++) l'errore :

15 C:\Dev-Cpp\costruttore_distruttore.cpp new types may not be defined in a return type
15 C:\Dev-Cpp\costruttore_distruttore.cpp return type specification for constructor invalid

a proposito c' una scorciatoia di tasti per far apparire il simbolo ~.

oregon
04-11-2006, 18:13
Manca il ; alla fine della dichiarazione della classe, prima di quella linea ...

drinu
04-11-2006, 18:41
accidenti sono proprio scarso. :cry:

drinu
04-11-2006, 18:55
attenzione per,la guida dice che l'output del programma :

10 10
sto distruggendo...
sto distruggendo...

invece il mio :

10 10

:)

drinu
04-11-2006, 19:21
attenzione per,la guida dice che l'output del programma :

10 10
sto distruggendo...
sto distruggendo...

invece il mio :

10 10

:)

oregon
04-11-2006, 20:15
Il distruttore in questo caso viene chiamato al termine del main.

Ma il tuo programma non termina proprio perche' c'e' la chiamata a system che attende un tasto.

Dopo tale tasto avviene la distruzione ma probabilmente tu non vedi le frasi perche' la finestra si chiude.

Per aggirare l'ostacolo, elimina la system ed esegui il programma compilato all'interno di una finestra DOS.

drinu
06-11-2006, 19:46
giusto grazie!!!
ciao

Il Pazzo
08-11-2006, 09:02
Ha senso richiamare un metodo dentro il costruttore?

Vi spiego... io dovrei inizializzare uno stack ma non posso se non ho il numero degli elementi... quindi, nel costruttore vorrei prima richimare il metodo "inserisci" (che contiene un cin e il controllo se un intero positivo) e poi mettere l'inizializzazione dello stack...

Si pu fare questa cosa?

oregon
08-11-2006, 11:32
Piuttosto che chiamare un metodo, scrivi una funzione membro privata e chiama quella.

Il Pazzo
08-11-2006, 11:57
Ok grazie... :)

Loading