PDA

Visualizza la versione completa : [C++] problema con classe


renzo74
12-04-2003, 18:59
Nella funzione main dichiaro:

Cl *Myclass = new Cl(str_a, str_b, str_c);
Myclass->funz_a();

per eseguire la funzione funz_a() della classe Myclass.

Il file headre della classe CL :

class Cl{
public:
Cl(string_a,string_b,string_c);
~Cl();
void funz_a();
....

Il file cpp :

Cl::Cl(string_a,string_b,string_c)
{
...
}

void Cl::funz_a()
{
codice non elaborato
....
}
------------------------------
Il mio problema sta nel fatto che non esegue il codice della funzione funz_a():dh:

perch:master:

Zalex
12-04-2003, 19:23
e cosa fa?

renzo74
12-04-2003, 19:28
Esegue tutto il codice fino alla chiamata alla funzione e si ferma la.
Ho provato a far iniziare la funzione con un semplice cout..., ma niente...
Ne ho inserito uno anche subito dopo la chiamata alla funzione e niente:dh:
Praticamente il programma si blocca quando arriva alla chiamata:dh: :dh: :dh: :cry:

r0x
13-04-2003, 01:58
Ehm.. dai uno sguardo al costruttore allora, o almeno mostra tutto il codice. :D

renzo74
13-04-2003, 09:54
Il costruttore non fa nulla di interessante, inizializza solo tre variabili dichiarate private nell'header:

Cl::Cl(string_a,string_b,string_c)
{
stra = string_A;
strb = string_B;
strc = string_C;
}
---------------------------
Come vedi nessuna istruzione. Le variabili private le vado poi ad utilizzare in funz_a().
?:bh: :master:

renzo74
13-04-2003, 11:37
:dh: :master: :dh:

Il problema non sta nel fatto che non esegue il codice della funzione ma non crea nemmeno la classe!:dh: :dh:

Ho fatto una banale prova inserendo nel costruttore
cout << "prova";
e... non compare nulla:dh: :dh: :dh:

Chi mi aiuta?

Zalex
13-04-2003, 14:51
sinceramente non riesco proprio a capire quale sia il tuo problema e non capisco nemmeno gli argomenti del costruttore??(string_a,string_b,string_c):master:

cmq un codice del genere non ha errori e funge


//file.h
#include<iostream>
#include<string>
class Cl{
public:
string A,B,C;
Cl(string_a,string_b,string_c):A(a),B(b),C(c){cout<<"sono il costruttore"<<endl;};
~Cl(){};
void funz_a();
};

void Cl::funz_a(){
cout<<"funz_a()"<<endl;
}




//file.cpp
#include "renzo.h"

main(){

Cl *punt=new Cl("pippo","pluto","papero");
punt->funz_a();
}


:ciauz:

renzo74
13-04-2003, 15:25
Originariamente inviato da Zalex
sinceramente non riesco proprio a capire quale sia il tuo problema e non capisco nemmeno gli argomenti del costruttore??(string_a,string_b,string_c):master:

cmq un codice del genere non ha errori e funge


//file.h
#include<iostream>
#include<string>
class Cl{
public:
string A,B,C;
Cl(string_a,string_b,string_c):A(a),B(b),C(c){cout<<"sono il costruttore"<<endl;};
~Cl(){};
void funz_a();
};

void Cl::funz_a(){
cout<<"funz_a()"<<endl;
}




//file.cpp
#include "renzo.h"

main(){

Cl *punt=new Cl("pippo","pluto","papero");
punt->funz_a();
}


:ciauz:

Ti ringrazio. Il codice che mi hai postato, a grandi linee molto simile al mio.
La differenza sta nel fatto che la funzione funz_a la dichiari col suo prototipo nell'header e la scrivi completamente nello stesso (comprensiva di tutto il codice da elaborare). Se faccio cos funziona anche il mio. Perch se lascio nell'header solo il prototipo e la funzione vera e propria la scrivo nel file file.cpp non va?:master:

r0x
13-04-2003, 15:29
Renzo74, po-sta-il-co-di-ce! :D

Zalex
13-04-2003, 15:38
ma e' la stessa cosa!!:D

se metti l'implementazione di funz_a() in un file impl.cpp compili impl.cpp senza lincarlo(g++ -c impl.cpp)

e poi compili il main.cpp col file oggetto creato in precedenza
(g++ main.cpp impl.o)
non mi puoi dire che non funge :D

Loading