1

Buenas a todos,

estoy haciendo este ejercicio, pero por más que he mirado, no encuentro el error que me da cuando compila. Creo haber definido bien todos los ámbitos de las funciones de la clase, pero no hay forma. Este es el MAIN.CPP

//  main.cpp
#include <iostream>
#include "Rectangulo.h"
using namespace std;

int main()
{
  Rectangulo r1;
  r1.establecerRectangulo(2, 2);
  r1.calculaPerimetro(r1.conseguirLongitud(), r1.conseguirAnchura());
  r1.calculaArea(r1.conseguirLongitud(), r1.conseguirAnchura());
  return 0;
}

Aquí tengo la clase Rectángulo (Rectángulo.h):

#ifndef Rectangulo_h
#define Rectangulo_h

class Rectangulo
{
public:
  Rectangulo(float = 1.0, float = 1.0);
  void establecerRectangulo(float lon, float anc);
  float conseguirAnchura();
  float conseguirLongitud();
  void calculaPerimetro(float largo, float ancho);
  void calculaArea(float largo, float ancho);
private:
  float anchura;
  float longitud;
};


#endif /* Rectangulo_h */

Aquí tengo la definición de las funciones de la clase Rectángulo: (Rectángulo.cpp)

#include <iostream>
using namespace std;
#include "Rectangulo.h"

Rectangulo::Rectangulo(float lon, float anc)
{
  establecerRectangulo(lon, anc);
}

void Rectangulo::establecerRectangulo(float lon, float anc)
{
  anchura = (anc<20.0) ? anc : 1.0;
  longitud = (lon>0.0) ? lon : 1.0;
}

float Rectangulo::conseguirAnchura()
{
  return anchura;
}

float Rectangulo::conseguirLongitud()
{
  return longitud;
}

void Rectangulo::calculaPerimetro(float largo, float ancho)
{
  cout <<"El perímetro es: " << 2*largo+2*ancho << endl;
}

void Rectangulo::calculaArea(float largo, float ancho)
{
  cout <<"El área es: " << largo*ancho << endl;
}

Cualquier ayuda os lo agradecería enormemente.

Un saludo a todos.

Edito: Este es el error:

Mensaje al compilar

ProgrammerJr
  • 759
  • 5
  • 14
  • ¿Cual es el mensaje de error? –  Jan 03 '18 at 17:57
  • He editado el post principal y ya lo he añadido. Está compilado con Xcode pero también lo he probado con CodeRunner, Atom... y mismo error. Gracias @eyllanesc – ProgrammerJr Jan 03 '18 at 18:00
  • Me parece que es una configuracion de tu IDE, yo lo he compilado sin ningun problema y obtengo lo siguiente: `El perímetro es: 8 El área es: 4` –  Jan 03 '18 at 18:01
  • Gracias @eyllanesc Pues seguiré investigando, el caso es que he estado haciendo varios ejercicios de ese tipo y me compila perfectamente los otros. Si doy con la solución os la dejaré, si alguien tiene alguna sugerencia, agradecido estoy. Un saludo! – ProgrammerJr Jan 03 '18 at 18:04
  • Trata de eliminar las tildes, quizas te genere eso el error, es una posibilidad –  Jan 03 '18 at 18:05
  • El problema es que el enlazador no encuentra las implementaciones de `Rectangulo.cpp`... ¿seguro que al generar el ejecutable estás añadiendo el código objeto correspondiente a este fichero? p. ej `rectangulo.o` – eferion Jan 04 '18 at 17:29
  • Solucionado: al final era un problema al añadir un archivo cpp en Xcode. Es como si al añadirlo desde donde muestran los iconos de archivo c++ me lo asocia a un .h en concreto. La solución era ir a File => New => File C++. Ahí te pregunta si quieres añadir una cabecera (que ya la tenía creada) y le doy a que no y ya no me ocurre el problema. !Gracias a todos! – ProgrammerJr Jan 08 '18 at 09:36
  • Posible duplicado de [Simbolo externo sin resolver ¿Qué he hecho mal?](https://es.stackoverflow.com/questions/65557/simbolo-externo-sin-resolver-qu%c3%a9-he-hecho-mal) – PaperBirdMaster Jan 12 '18 at 10:10

0 Answers0