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
#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
******************************************************
#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.