• Viernes 8 de Noviembre de 2024, 20:55

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - moesan

Páginas: [1]
1
C/C++ / Re: Duda sobre composición/agregación de clases.
« en: Jueves 5 de Mayo de 2011, 21:11 »
Hola profesorX, gracias por contestar. Aquí tienes las clases:
Vertice.h
Citar
#include <GL/gl.h>
#include <GL/glut.h>

class Vertex {
   private:
      GLfloat x, y, z;   
   public:
      Vertex();               
      Vertex(GLfloat, GLfloat, GLfloat);
      GLfloat getX();               
      GLfloat getY();
      GLfloat getZ();   
      void setX(GLfloat);            
      void setY(GLfloat);
      void setZ(GLfloat);
};

Vertice.cpp
Citar
#include "vertice.h"

Vertex::Vertex(){
}

Vertex::Vertex(GLfloat x, GLfloat y, GLfloat z){
   this->x = x;
   this->y = y;
   this->z = z;
}

GLfloat Vertex::getX(){
   return this->x;
}

GLfloat Vertex::getY(){
   return this->y;
}

GLfloat Vertex::getZ(){
   return this->z;
}
void Vertex::setX(GLfloat x){
   this->x = x;
}

void Vertex::setY(GLfloat y){
   this->y = y;
}

void Vertex::setZ(GLfloat z){
   this->z = z;
}

polygon.h
Citar
#include "vertice.h"

class Polygon {
   private:
      Vertex v[3];               //Vector que contiene los tres vertices del poligono
   public:
      Polygon();               //Constructores
      Polygon(Vertex*);
      Vertex getVer(int);
};

polygon.cpp
Citar
#include "polygon.h"

Polygon::Polygon(){
   for(int i = 0 ; i < 3 ; i++){
      this->v.setX(0.0);
      this->v.setY(0.0);
      this->v.setZ(0.0);
   }
}

Polygon::Polygon(Vertex *v){
   this->v[0] = v[0];
   this->v[1] = v[1];
   this->v[2] = v[2];
}


Vertex Polygon::getVer(int n){
   return this->v[n];
}

main.cpp
Citar
#include <iostream>
#include "polygon.h"

using namespace std;

int main(){
   Polygon p;
   p.getVer(0).setX(1.0);
   p.getVer(0).setY(1.0);
   p.getVer(0).setZ(1.0);
   cout<< "Valor del vertice 0: (" << p.getVer(0).getX() << "," << p.getVer(0).getY() << "," << p.getVer(0).getZ()<<")."<<endl;
   return 0;
}

Al compilar main, devuelve lo siguiente:

Valor del vertice 0: (0,0,0).

Así que no se han modificado las coordenadas... Alguna idea sobre que es lo que pasa?

Muchas gracias.

2
C/C++ / Duda sobre composición/agregación de clases.
« en: Jueves 5 de Mayo de 2011, 16:53 »
Hola, soy nuevo en la programación de clases de C++, aunque llevo algo de tiempo programando en Java. Estoy programando algo sencillo para entrar en materia, y me he encontrado con algo que no entiendo.
El caso es el siguiente: Creo una clase Vértice, que contiene 3 variables privadas x, y y z, y una clase Poligono, que contiene un vector de tres vértices como variable privada. Lo que no entiendo es que, cuando intento modificar alguna de las variables (por ejemplo x) de uno de los vertices del vector de poligonos, ésta no se modifica y mantiene su valor inicial. És decir, cuando programo lo siguiente:

poligono p;
(...)
p.getVer(0).setX(1.0);

Al imprimir por pantalla esto:

cout << p.getVer(0).getX();

Me imprime por pantalla 0.0 (que es el valor por defecto) en lugar de 1.0.

Esto es normal?

P.D.: En caso de que haya dado pocos detalles sobre el código avisadme, y pondré la clase entera.

Páginas: [1]