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

(ayuda)Problema con ejercicio de Clases en C++

Estas en el tema de (ayuda)Problema con ejercicio de Clases en C++ en el foro de C/C++ en Foros del Web. Realmente no sé cual es mi problema. Mi programa contiene un header llamada persona.h y un cpp llamada persona.h, son los siguientes: persona.cpp: Código: #include ...
  #1 (permalink)  
Antiguo 23/10/2015, 18:29
 
Fecha de Ingreso: octubre-2015
Ubicación: asfsfasfa
Mensajes: 4
Antigüedad: 8 años, 6 meses
Puntos: 0
Exclamación (ayuda)Problema con ejercicio de Clases en C++

Realmente no sé cual es mi problema.
Mi programa contiene un header llamada persona.h y un cpp llamada persona.h, son los siguientes:

persona.cpp:
Código:
#include <iostream>
#include <stdlib.h>
#include "persona.h"
#include <string.h>
#include <conio.h>
using namespace std;



int main ()
{
	Persona person("Manuel","Castillo Obregon");
	cout<<"Una persona: "<<endl;
	cout<<"Nombre: "<<person.nombre()<<endl;
	cout<<"Piernas: "<<person.piernas()<<endl;
	cout<<"Brazos: "<<person.brazos()<<endl;
	cout<<"Cabeza: "<<person.cabeza()<<endl;
	person.color_ojos="azul";
	cout<<"Color de los ojos: "<<person.color_ojos<<endl;
	person.color_pelo="Rubio";
	cout<<"Color de pelo: "<<person.color_pelo<<endl;
	cout<<"Estatura: "<<person.altura(1.80)<<endl;
	cout<<"Peso: "<<person.peso(77.77)<<" kg´s"<<endl;
	person.edad=21;
	cout<<"Edad: "<<person.edad<<endl;
	system("pause");
	return 0;
}
persona.h:
Código:
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;

class Persona {
	private:
		int _piernas;
		int _brazos;
		int _cabeza;
		string _nombre;
		string _apellidos;
		public:
			Persona(string n,string a);
			int piernas (){return _piernas;};
			int brazos ();
			int cabeza () {return _cabeza;};
			static string color_ojos;
			static string color_pelo;
			float altura (float a) {return a;};
			float peso (float p);
			static int edad;
			string nombre (){return _nombre;};
			string apellidos (){return _apellidos;};
			

};
Me tira estos errores:
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x75): undefined reference to `Persona::Persona(std::string, std::string)'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x157): undefined reference to `Persona::brazos()'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x1cd): undefined reference to `Persona::color_ojos'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x1ec): undefined reference to `Persona::color_ojos'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x211): undefined reference to `Persona::color_pelo'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x230): undefined reference to `Persona::color_pelo'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x2a9): undefined reference to `Persona::peso(float)'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x2f8): undefined reference to `Persona::edad'
C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o persona.cpp:(.text+0x302): undefined reference to `Persona::edad'
c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe C:\Users\SEBAST~1\AppData\Local\Temp\ccDBnvaG.o: bad reloc address 0x0 in section `.pdata$_ZN7Persona7piernasEv'
C:\Users\Sebastian Soler\Documents\Sockt\2310\HERENCIA\collect2.exe [Error] ld returned 1 exit status

¿Cuál es mi problema? No entiende, todo está bien implementado.

Mil Gracias.
  #2 (permalink)  
Antiguo 24/10/2015, 00:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: (ayuda)Problema con ejercicio de Clases en C++

El archivo persona.cpp debe contener las implementaciones de los métodos que has definido en persona.h

En persona.h tienes algunos métodos implementados dentro, como puede ser int piernas (){return _piernas;};m pero hay otros que has definido pero no has implementado, incluyendo las variables estáticas que han de contener un valor.
Precisamente esas variables estáticas sin valor asignado y métodos no implementados son los que te están dando el error.

Luego, el otro archivo (el que llamas persona.cpp), al que puedes llamar main.cpp y otro nombre, contiene la función principal y ahí instancias la clase.
__________________
Mi calculadora en Qt

Etiquetas: c++, clases, headers
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 00:02.