• Domingo 15 de Diciembre de 2024, 00:32

Autor Tema:  Duda sobre composición/agregación de clases.  (Leído 1541 veces)

moesan

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Duda sobre composición/agregación de clases.
« en: Jueves 5 de Mayo de 2011, 16:53 »
0
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.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Duda sobre composición/agregación de clases.
« Respuesta #1 en: Jueves 5 de Mayo de 2011, 18:27 »
0
Debes tener algo mal en el metodo setx de tu clase, si es necesario que publiques el codigo de tu clase, para saber en donde esta el problema porque no es normal lo que mencionas.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

moesan

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Duda sobre composición/agregación de clases.
« Respuesta #2 en: Jueves 5 de Mayo de 2011, 21:11 »
0
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.