ho due classi, una derivata dall'altra che devono stampare a schermo semplicemente dei numeri(coordinate x,y)
intestazione classe base: (elemento_base.h)
codice://header della classe class elemento_base { public: elemento_base(); ~elemento_base(); float x,y; int incl; void scrivi_coord(); private: float _x,_y; int _incl; };
implementazione classe base: (elemento_base.cpp)
intestazione classe derivata: (subposizione.h)codice:#include <cstdlib> #include <iostream> #include <cstdio> //aggiunto per la funzione printf, per scrivere formattato #include "elemento_base.h" using namespace std; //---------implementazione metodi------------- void elemento_base::scrivi_coord() { printf("------------------\n"); printf("ascissa: %f\n",_x); printf("ordinata: %f\n",_y); printf("inclinazione: %i\n",_incl); printf("------------------\n"); } //----------implementazione costruttore/distruttore----- elemento_base::elemento_base() { cout << "classe base" << endl; } elemento_base::~elemento_base() { }
implementazione classe derivata: (subposizione.cpp)codice:#include "elemento_base.h" class subposizione : public elemento_base { public: subposizione(); ~subposizione(); };
intestazione main: [qui c'e' solo la dichiarazione di una struttura che mi serve per passare le coordinate nel main] (main.h)codice:#include "subposizione.h" #include <iostream> using namespace std; //implementazione costruttire/distruttore subposizione::subposizione() { std:cout << "classe derivata" << endl; } subposizione::~subposizione() { }
implementazione del main: (main.cpp)codice://struttura per manipolare le coordinate struct strutturaposizione { float x_pos; float y_pos; int gradi; };
codice:#include "subposizione.h" #include <cstdlib> #include "main.h" int main(int argc, char *argv[]) { //popolo la struttura che mi servira per passare le coordinate alla classe strutturaposizione myPosition; myPosition.x_pos = 100; myPosition.y_pos = 100; myPosition.gradi = 45; subposizione mySubpos; //imposto le proprieta della classe mySubpos.x = myPosition.x_pos; mySubpos.y = myPosition.y_pos; mySubpos.incl = myPosition.gradi; mySubpos.scrivi_coord(); //chiamo il meodo system("PAUSE"); return EXIT_SUCCESS; }
ora quello che m aspetto è una cosa del genere:
classe base
classe derivata
------------------
ascissa: 100
ordinata: 100
inclinazione: 45
------------------
Premere un tasto per continuare . . .
ma ottengo questo:
classe base
classe derivata
------------------
ascissa: 0.000000
ordinata: 7803114877267773200000000000000000.000000
inclinazione: 2008948848
------------------
Premere un tasto per continuare . . .
ho provato a sostiture i codici di formattazione della riga printf("ascissa: %f\n",_x); con %s ma mi scrive
ascissa: null e poi va in crash l'applicazione
mi potete dare una mano? perche la formattazione viene in quel modo?

Rispondi quotando