Hola buenas, tengo la siguiente duda.
Estoy aprendiendo a programar, y me he encontrado con que en mi programa no puedo usar una funcion, definida en una clase, pasandole como parametro un objeto ya creado.
Al compilar me devuelve el error.
" Error 1 error LNK2019: unresolved external symbol "public: void __thiscall Rectangulo::config_punto_inferior_derecho(class Punto)" (?config_punto_inferior_derecho@Rectangulo@@QAEXVP unto@@@Z) referenced in function _main C:\Users\raulh_000\Desktop\Problema de Clases\Source.obj Project35
"
"Error 2 error LNK1120: 1 unresolved externals C:\Users\raulh_000\Desktop\Problema de Clases\Debug\Project35.exe 1 1 Project35
"
Os dejo el codigo Aqui:
Source.cpp
Código C++:
Ver original#define _CRT_SECURE_NO_WARNINGS
#include "Punto.h"
#include "Rectangulo.h"
#include <stdio.h>
int main() {
int coordenada;
//Punto a
Punto a;
printf("Inserti les coordenades\n"); //scanf("%i",&coordenada);
coordenada=5;
a.config_x(coordenada);
//scanf("%i",&coordenada);
coordenada=5;
a.config_y(coordenada);
//Punto b
Punto b;
printf("Inserti les coordenades\n"); //scanf("%i",&coordenada);
coordenada=0;
b.config_x(coordenada);
//scanf("%i",&coordenada);
coordenada=0;
b.config_y(coordenada);
//Punto c
Punto c;
printf("Inserti les coordenades\n"); //scanf("%i",&coordenada);
coordenada=0;
c.config_x(coordenada);
//scanf("%i",&coordenada);
coordenada=5;
c.config_y(coordenada);
//Punto d
Punto d;
printf("Inserti les coordenades\n"); //scanf("%i",&coordenada);
coordenada=5;
d.config_x(coordenada);
//scanf("%i",&coordenada);
coordenada=0;
d.config_y(coordenada);
//Crea Rectangle
Rectangulo rectang(c,a,b,d);//Li pasem els punts com si fosin una variable
//Retorne la el valor de la area
rectang.config_punto_inferior_derecho(a);
printf("La area es %i",rectang.
return_area()); }
Punto.cpp:
Código C++:
Ver original#include "Punto.h"
Punto::Punto() {
x=0;
y=0;
}
Punto::~Punto() {
}
void Punto::config_x(int varx) {
x=varx;
}
void Punto::config_y(int vary) {
y=vary;
}
int Punto::return_x() {
return x;
}
int Punto::return_y() {
return y;
}
Rectangulo.cpp
Código C++:
Ver original#include "Rectangulo.h"
#include "Punto.h"
//Constructor de Rectangle
Rectangulo::Rectangulo(Punto a,Punto b,Punto c,Punto d) {
//Considerem els punts com una variable y els hi pasem al rectangle
punto_superior_izquierdo=a;
punto_superior_derecho=b;
punto_inferior_izquierdo=c;
punto_inferior_derecho=d;
//Pasem el resultat de les funcions definides a "Punto.h" de els punts que formen les linies
linea_superior=punto_superior_derecho.return_x()-punto_superior_izquierdo.return_x();
linea_inferior=punto_inferior_derecho.return_x()-punto_inferior_izquierdo.return_x();
linea_izquierda=punto_superior_izquierdo.return_y()-punto_inferior_izquierdo.return_y();
linea_derecha=punto_superior_derecho.return_y()-punto_inferior_derecho.return_y();
};
Rectangulo::~Rectangulo() {
}
void config_punto_superior_izquierdo(Punto p) {
Punto punto_superior_izquierdo=p;
}
void config_punto_superior_derecho(Punto p) {
Punto punto_superior_derecho=p;
}
void config_punto_inferior_izquierdo(Punto p) {
Punto punto_inferior_izquierdo=p;
}
void config_punto_inferior_derecho(Punto p) {
Punto punto_inferior_derecho=p;
}
Rectangulo.h
Código C++:
Ver original#pragma once
#include "Punto.h"
class Rectangulo {
public:
Rectangulo(Punto punto_superior_izquierdo,Punto punto_superior_derecho,Punto punto_inferior_izquierdo,Punto punto_inferior_derecho);
~Rectangulo();
void config_punto_superior_izquierdo(Punto p);
void config_punto_superior_derecho(Punto p);
void config_punto_inferior_izquierdo(Punto p);
void config_punto_inferior_derecho(Punto p);
int return_area()const {
return linea_izquierda*linea_derecha;
}
private:
//Crea els Punts del rectangle
Punto punto_superior_izquierdo;
Punto punto_superior_derecho;
Punto punto_inferior_izquierdo;
Punto punto_inferior_derecho;
//La longitud de cada aresta
int linea_superior=punto_superior_derecho.return_x()-punto_superior_izquierdo.return_x();
int linea_inferior=punto_inferior_derecho.return_x()-punto_inferior_izquierdo.return_x();
int linea_izquierda=punto_superior_izquierdo.return_y()-punto_inferior_izquierdo.return_y();
int linea_derecha=punto_superior_derecho.return_y()-punto_inferior_derecho.return_y();
};
Punto.h
Código C++:
Ver original#pragma once
class Punto {
public:
Punto();
~Punto();
private:
int x;
int y;
public:
void config_x(int varx);
void config_y(int vary);
int return_x();
int return_y();
};