Foros del Web » Programación para mayores de 30 ;) » C/C++ »

C/C++ Problema al usar un metodo pasandole un objeto

Estas en el tema de C/C++ Problema al usar un metodo pasandole un objeto en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/12/2014, 11:19
 
Fecha de Ingreso: diciembre-2014
Ubicación: Lleida
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Pregunta C/C++ Problema al usar un metodo pasandole un objeto

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
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include "Punto.h"
  3. #include "Rectangulo.h"
  4. #include <stdio.h>
  5. int main() {
  6.     int coordenada;
  7.  
  8.     //Punto a
  9.     Punto a;
  10.     printf("Inserti les coordenades\n");
  11.     //scanf("%i",&coordenada);
  12.     coordenada=5;
  13.     a.config_x(coordenada);
  14.     //scanf("%i",&coordenada);
  15.     coordenada=5;
  16.     a.config_y(coordenada);
  17.  
  18.     //Punto b
  19.     Punto b;
  20.     printf("Inserti les coordenades\n");
  21.     //scanf("%i",&coordenada);
  22.     coordenada=0;
  23.     b.config_x(coordenada);
  24.     //scanf("%i",&coordenada);
  25.     coordenada=0;
  26.     b.config_y(coordenada);
  27.  
  28.     //Punto c
  29.     Punto c;
  30.     printf("Inserti les coordenades\n");
  31.     //scanf("%i",&coordenada);
  32.     coordenada=0;
  33.     c.config_x(coordenada);
  34.     //scanf("%i",&coordenada);
  35.     coordenada=5;
  36.     c.config_y(coordenada);
  37.  
  38.     //Punto d
  39.     Punto d;
  40.     printf("Inserti les coordenades\n");
  41.     //scanf("%i",&coordenada);
  42.     coordenada=5;
  43.     d.config_x(coordenada);
  44.     //scanf("%i",&coordenada);
  45.     coordenada=0;
  46.     d.config_y(coordenada);
  47.  
  48.     //Crea Rectangle
  49.     Rectangulo rectang(c,a,b,d);//Li pasem els punts com si fosin una variable
  50.     //Retorne la el valor de la area
  51.     rectang.config_punto_inferior_derecho(a);
  52.     printf("La area es %i",rectang.return_area());
  53. }

Punto.cpp:

Código C++:
Ver original
  1. #include "Punto.h"
  2.  
  3.  
  4. Punto::Punto() {
  5.     x=0;
  6.     y=0;
  7. }
  8.  
  9.  
  10. Punto::~Punto() {
  11. }
  12.  
  13.  
  14. void Punto::config_x(int varx) {
  15.     x=varx;
  16. }
  17.  
  18.  
  19. void Punto::config_y(int vary) {
  20.     y=vary;
  21. }
  22.  
  23.  
  24. int Punto::return_x() {
  25.     return x;
  26. }
  27.  
  28.  
  29. int Punto::return_y() {
  30.     return y;
  31. }

Rectangulo.cpp
Código C++:
Ver original
  1. #include "Rectangulo.h"
  2. #include "Punto.h"
  3. //Constructor de Rectangle
  4. Rectangulo::Rectangulo(Punto a,Punto b,Punto c,Punto d) {
  5.     //Considerem els punts com una variable y els hi pasem al rectangle
  6.     punto_superior_izquierdo=a;
  7.     punto_superior_derecho=b;
  8.     punto_inferior_izquierdo=c;
  9.     punto_inferior_derecho=d;
  10.  
  11.     //Pasem el resultat de les funcions definides a "Punto.h" de els punts que formen les linies
  12.     linea_superior=punto_superior_derecho.return_x()-punto_superior_izquierdo.return_x();
  13.     linea_inferior=punto_inferior_derecho.return_x()-punto_inferior_izquierdo.return_x();
  14.     linea_izquierda=punto_superior_izquierdo.return_y()-punto_inferior_izquierdo.return_y();
  15.     linea_derecha=punto_superior_derecho.return_y()-punto_inferior_derecho.return_y();
  16. };
  17.  
  18.  
  19.  
  20. Rectangulo::~Rectangulo() {
  21. }
  22.  
  23. void config_punto_superior_izquierdo(Punto p) {
  24.     Punto punto_superior_izquierdo=p;
  25. }
  26. void config_punto_superior_derecho(Punto p) {
  27.     Punto punto_superior_derecho=p;
  28. }
  29. void config_punto_inferior_izquierdo(Punto p) {
  30.     Punto punto_inferior_izquierdo=p;
  31. }
  32. void config_punto_inferior_derecho(Punto p) {
  33.     Punto punto_inferior_derecho=p;
  34. }

Rectangulo.h
Código C++:
Ver original
  1. #pragma once
  2. #include "Punto.h"
  3. class Rectangulo {
  4. public:
  5.     Rectangulo(Punto punto_superior_izquierdo,Punto punto_superior_derecho,Punto punto_inferior_izquierdo,Punto punto_inferior_derecho);
  6.     ~Rectangulo();
  7.     void config_punto_superior_izquierdo(Punto p);
  8.     void config_punto_superior_derecho(Punto p);
  9.     void config_punto_inferior_izquierdo(Punto p);
  10.     void config_punto_inferior_derecho(Punto p);
  11.     int return_area()const {
  12.         return linea_izquierda*linea_derecha;
  13.     }
  14.  
  15. private:
  16.     //Crea els Punts del rectangle
  17.     Punto punto_superior_izquierdo;
  18.     Punto punto_superior_derecho;
  19.     Punto punto_inferior_izquierdo;
  20.     Punto punto_inferior_derecho;
  21.  
  22.     //La longitud de cada aresta
  23.     int linea_superior=punto_superior_derecho.return_x()-punto_superior_izquierdo.return_x();
  24.     int linea_inferior=punto_inferior_derecho.return_x()-punto_inferior_izquierdo.return_x();
  25.     int linea_izquierda=punto_superior_izquierdo.return_y()-punto_inferior_izquierdo.return_y();
  26.     int linea_derecha=punto_superior_derecho.return_y()-punto_inferior_derecho.return_y();
  27. };

Punto.h
Código C++:
Ver original
  1. #pragma once
  2. class Punto {
  3. public:
  4.     Punto();
  5.     ~Punto();
  6. private:
  7.     int x;
  8.     int y;
  9. public:
  10.     void config_x(int varx);
  11.     void config_y(int vary);
  12.     int return_x();
  13.     int return_y();
  14. };
  #2 (permalink)  
Antiguo 27/12/2014, 13:38
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: C/C++ Problema al usar un metodo pasandole un objeto

En el archivo Ractangulo.cpp
las funciones:
Código C++:
Ver original
  1. void config_punto_superior_izquierdo ( Punto p ) {
  2.     Punto punto_superior_izquierdo = p;
  3. }
  4. void config_punto_superior_derecho ( Punto p ) {
  5.     Punto punto_superior_derecho = p;
  6. }
  7. void config_punto_inferior_izquierdo ( Punto p ) {
  8.     Punto punto_inferior_izquierdo = p;
  9. }
  10. void config_punto_inferior_derecho ( Punto p ) {
  11.     Punto punto_inferior_derecho = p;
  12. }

No deberian ser:
Código C++:
Ver original
  1. void Rectangulo::config_punto_superior_izquierdo ( Punto p ) {
  2.     Punto punto_superior_izquierdo = p;
  3. }
  4. void Rectangulo::config_punto_superior_derecho ( Punto p ) {
  5.     Punto punto_superior_derecho = p;
  6. }
  7. void Rectangulo::config_punto_inferior_izquierdo ( Punto p ) {
  8.     Punto punto_inferior_izquierdo = p;
  9. }
  10. void Rectangulo::config_punto_inferior_derecho ( Punto p ) {
  11.     Punto punto_inferior_derecho = p;
  12. }

de modo que el archivo quedara:
Código C++:
Ver original
  1. #include "Rectangulo.h"
  2. #include "Punto.h"
  3. //Constructor de Rectangle
  4. Rectangulo::Rectangulo ( Punto a, Punto b, Punto c, Punto d ) {
  5.     //Considerem els punts com una variable y els hi pasem al rectangle
  6.     punto_superior_izquierdo = a;
  7.     punto_superior_derecho = b;
  8.     punto_inferior_izquierdo = c;
  9.     punto_inferior_derecho = d;
  10.    
  11.     //Pasem el resultat de les funcions definides a "Punto.h" de els punts que formen les linies
  12.     linea_superior = punto_superior_derecho.return_x() - punto_superior_izquierdo.return_x();
  13.     linea_inferior = punto_inferior_derecho.return_x() - punto_inferior_izquierdo.return_x();
  14.     linea_izquierda = punto_superior_izquierdo.return_y() - punto_inferior_izquierdo.return_y();
  15.     linea_derecha = punto_superior_derecho.return_y() - punto_inferior_derecho.return_y();
  16. };
  17.  
  18.  
  19.  
  20. Rectangulo::~Rectangulo() {
  21. }
  22.  
  23. void Rectangulo::config_punto_superior_izquierdo ( Punto p ) {
  24.     Punto punto_superior_izquierdo = p;
  25. }
  26. void Rectangulo::config_punto_superior_derecho ( Punto p ) {
  27.     Punto punto_superior_derecho = p;
  28. }
  29. void Rectangulo::config_punto_inferior_izquierdo ( Punto p ) {
  30.     Punto punto_inferior_izquierdo = p;
  31. }
  32. void Rectangulo::config_punto_inferior_derecho ( Punto p ) {
  33.     Punto punto_inferior_derecho = p;
  34. }

Salu =)

Etiquetas: clase, funcion, int, metodo, objeto, programa, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:22.