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)
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()
{
}
intestazione classe derivata: (subposizione.h)
codice:
#include "elemento_base.h"
class subposizione : public elemento_base
{
public:
subposizione();
~subposizione();
};
implementazione classe derivata: (subposizione.cpp)
codice:
#include "subposizione.h"
#include <iostream>
using namespace std;
//implementazione costruttire/distruttore
subposizione::subposizione()
{
std:cout << "classe derivata" << endl;
}
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:
//struttura per manipolare le coordinate
struct strutturaposizione
{
float x_pos;
float y_pos;
int gradi;
};
implementazione del main: (main.cpp)
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?