Ayuda con objetos y cabeceras

Iniciado por Lordawn, 4 Octubre 2016, 14:32 PM

0 Miembros y 1 Visitante están viendo este tema.

Lordawn

Hola a todo y muchas gracias de antemano por la ayuda.

Estoy tratando de hacer un programa que me calcule el area de un rectángulo.
He creado dos ficheros, una cabecera hpp y el main.cpp pero no hago más que recibir el siguiente error y no sé por qué:

||=== Build: Debug in Rectangulo (compiler: GNU GCC Compiler) ===|
main.cpp|41|error: 'MiRectangulo' is not a class or namespace|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
||=== Run: Debug in Rectangulo (compiler: GNU GCC Compiler) ===|

*********************************************************************

Mi fichero Rectangulo.hpp

Código (cpp) [Seleccionar]
#ifndef RECTANGULO_HPP_INCLUDED
#define RECTANGULO_HPP_INCLUDED
#include <iostream>

class Punto  // Contiene las coordenadas 'X' e 'Y'
{
private:
    int suX;
    int suY;

public:
    void ConfigurarX(int x) {suX = x;}
    void ConfigurarY(int y) {suY = y;}
    int ObtenerX() const { return suX;}
    int ObtenerY() const { return suY;}
};

class Rectangulo
{
public:
    Rectangulo (int superior, int izquierdo, int inferior, int derecho);
    ~Rectangulo () {}
    int ObtenerSuperior() const { return suSuperior;}
    int ObtenerIzquierdo() const { return suIzquierdo;}
    int ObtenerInferior() const { return suInferior;}
    int ObtenerDerecho() const { return suDerecho;}

    void ConfigurarSuperior (int superior) { suSuperior = superior; }
    void ConfigurarIzquierdo (int izquierdo) { suIzquierdo = izquierdo; }
    void ConfigurarInferior (int inferior) { suInferior = inferior; }
    void ConfigurarDerecho (int derecho) { suDerecho = derecho; }

    Punto ObtenerSuperiorIzquierdo() const { return suSuperiorIzquierdo;}
    Punto ObtenerInferiorIzquierdo() const { return suInferiorIzquierdo;}
    Punto ObtenerSuperiorDerecho() const { return suSuperiorDerecho;}
    Punto ObtenerInferiorDerecho() const { return suInferiorDerecho;}

    void ConfigurarSuperiorIzquierdo(Punto Localizacion) { suSuperiorIzquierdo = Localizacion;}
    void ConfigurarInferiorIzquierdo(Punto Localizacion) { suInferiorIzquierdo = Localizacion;}
    void ConfigurarSuperiorDerecho(Punto Localizacion) { suSuperiorDerecho = Localizacion;}
    void ConfigurarInferiorDerecho(Punto Localizacion) { suInferiorDerecho = Localizacion;}

    int ObtenerArea() const;

private:
    Punto suSuperiorIzquierdo;
    Punto suSuperiorDerecho;
    Punto suInferiorIzquierdo;
    Punto suInferiorDerecho;
    int suSuperior;
    int suIzquierdo;
    int suInferior;
    int suDerecho;
};


#endif // RECTANGULO_HPP_INCLUDED




*********************************************************************

Mi fichero main.cpp

Código (cpp) [Seleccionar]
#include "Rectangulo.hpp"
//#include <iostream>


using namespace std;

Rectangulo::Rectangulo(int superior, int izquierdo, int inferior, int derecho)
    {
      suSuperior = superior;
      suIzquierdo = izquierdo;
      suInferior = inferior;
      suDerecho = derecho;

      suSuperiorIzquierdo.ConfigurarX(izquierdo);   //Punto 1
      suSuperiorIzquierdo.ConfigurarY(superior);

      suSuperiorDerecho.ConfigurarX(derecho);       //Punto 2
      suSuperiorDerecho.ConfigurarY(superior);

      suInferiorIzquierdo.ConfigurarX(izquierdo);   //Punto 3
      suInferiorIzquierdo.ConfigurarY(inferior);

      suInferiorDerecho.ConfigurarX(derecho);       //Punto 4
      suInferiorDerecho.ConfigurarY(inferior);
     }

int Rectangulo::ObtenerArea() const
{
    int Ancho = suDerecho-suIzquierdo;
    int Alto = suSuperior-suInferior;
    return (Ancho * Alto);
}



int main()
{

    Rectangulo MiRectangulo (100,20,50,80);
    int Area;
    Area = MiRectangulo::ObtenerArea();
    cout << "El rectangulo tiene un area de " << Area << " mtros, cuadrados." << endl;
    return 0;
}

******************************************************

Alguien podría por favor explicarme que está pasando?

Mil gracias por su ayuda.


Vale, ya encontré el problema.

Llamé a la función miembro 'ObtenerArea' de la clase 'Rectangulo' como si de una implementación se tratara.

Mal:
Area = MiRectangulo::ObtenerArea();

Bien:
Area = MiRectangulo.ObtenerArea();

Que malo es ser novato y que bueno es descansar un rato cuando no consigues avanzar.

Gracias a todos!!!


MOD: No hacer doble post.