<file Oggetto.h>
class Oggetto
{
public:
Oggetto();
~Oggetto();
GLfloat getPosizioneX();
GLfloat getPosizioneY();
GLfloat getPosizioneZ();
GLvoid setPosizione(GLfloat x, GLfloat y, GLfloat z);
};
<file Oggetto.cpp>
#include "Oggetto.h"
GLfloat posizione[3] = { 0.0,0.0,0.0 };
Oggetto::Oggetto()
{
}
Oggetto::~Oggetto()
{
}
GLfloat Oggetto::getPosizioneX() {
return posizione[0];
}
GLfloat Oggetto::getPosizioneY() {
return posizione[1];
}
GLfloat Oggetto::getPosizioneZ() {
return posizione[2];
}
GLfloat Oggetto::setPosizione(GLfloat x, GLfloat y, GLfloat z){
posizione[0] = x;
...
...
}
<file Quadrato.h>
class Quadrato : public Oggetto
{
private:
GLuint texture = 0;
GLint numero = 5;
public:
Quadrato();
Quadrato(GLint num);
~Quadrato();
GLvoid render();
};
<file Quadrato.cpp>
Quadrato::Quadrato()
{
}
Quadrato::Quadrato(GLint num)
{
}
Quadrato::~Quadrato()
{
}
GLvoid Quadrato::render() {
glTranslatef(getPosizioneX(), getPosizioneY(), getPosizioneZ());
}
///////////////main
#include "Quadrato.h"
Quadrato* sfondoMare;
Quadrato* sfondoCielo;
sfondoMare->setPosizione(1,2,3);
sfondoCielo->setPosizione(4,5,6);
printf("Numero sfondo cielo %d \n", sfondoCielo->getPosizioneX());
printf("Numero sfondo mare %d \n", sfondoMare->getPosizioneX());
in entrambi ottengo 4 invece di 1 e 4.
Sembra che lavoro con la stessa istanza della superclasse invece che essere distinte e separate