|
| Autor |
Mensaje |
Darkside-tk2 Usuario Activo

Registrado: 30 May 2011 Mensajes: 214 Ubicación: Portoviejo - Manabí - Ecuador
|
Publicado: Mar 20 Dic, 2011 01:33 am
Título del mensaje: Clases y sus implementaciones |
|
|
Ultimamente tuve que descargarme el VisualStudio Express 2008
por que no me corrían las clases déjenme explicaros estoy siguiendo un tuto muy bueno sobre clases pero me quedo en esto y a lo mejor es algo que yo creo que esta mal echo....
Tenemos 3 archivos verdad;
Practicing.cpp <- Este es el main;
cat.hpp <- Aqui estan las clases.
cat.cpp <- aqui las implementaciones.
entonces en el WxDevC++ me iba bien no me gustan mucho los "projectos"
Veamos un poco el codigo si:
En el Practicing.cpp:
| Código: |
#include <iostream>
#include "cat.hpp"
//Espacio de nombres std;
using namespace std;
int main()
{
cat Mcat;
cin.get();
return 0;
}
|
En el cat.hpp va asi:
| Código: |
#ifndef CAT_HPP
#define CAT_HPP
class cat
{
public:
cat(void);
~cat(void);
};
#endif
|
y en el cat.cpp va asi:
| Código: |
#include <iostream>
#include "cat.hpp"
using namespace std;
cat::cat(void)
{
cout << "constructing cat";
}
cat::~cat(void)
{
}
|
Bien al compilar el Practicing.cpp en my querido WxDevC++ me da linker error a todas las clases.
Tambien puedo hacer es poner las clases y sus implementaciones en cat.hpp, o simplemente en vez de incluir a cat.hpp en el Practicing.cpp
incluyo al cat.h y ahy pongo todo?
Mmmm sera el compilador y debe esto hacerse asi? |
Programador joven... Programar es compartir XD
Mis Proyectos, Guias y más.
C++ OWNS!
|
|
| Volver arriba |
|
|
eduar2083 Usuario Activo

Registrado: 14 Nov 2008 Mensajes: 195 Ubicación: Lima - Perú
|
Publicado: Mar 20 Dic, 2011 02:44 am
Título del mensaje: Re: Clases y sus implementaciones |
|
|
Hola.
La declaración de la clase se hace en un archivo con extensión .h .hpp, personalmenete suelo usar la primera. En este paso se define la Interfaz de la clase. Veamos un ejemplo:
| Código: | // MyClass.h
#ifndef MYCLASS_H_INCLUDED
#define MYCLASS_H_INCLUDED
class MyClass
{
public:
MyClass();
~MyClass();
};
#endif // MYCLASS_H_INCLUDED |
Aquí se deben declarar tanto los datos miembro como las funciones que manipulan dichos datos (funciones miembro) pero sin implementación, es decir sólo sus prototipos.
En otro archivo aparte, se escribe el código de las funciones miembro. En este paso se define la Implementación de la clase.
| Código: | // MyClass.cpp
#include <iostream>
#include "MyClass.h"
using namespace std;
MyClass::MyClass()
{
cout << "Objeto creado\n";
}
MyClass::~MyClass()
{
cout<< "Objeto destruido\n";
}
|
Hasta aquí ya se tiene la clase y su implementación, lista para crear objetos de dicha clase. Hagamos una prueba:
| Código: | #include <cstdlib>
#include "MyClass.h"
int main()
{
MyClass *obj = new MyClass();
delete obj;
return EXIT_SUCCESS;
}
|
Ahora bien, para que esto funcione, se deben compilar juntos los archivos .cpp que usará nuestro programa main, esto difiere de un entorno (IDE) a otro. La forma más básica sin utilizar un IDE es hacerlo desde el shell (Compilador GNU C):
| Código: | | g++ MyClass.cpp main.cpp -o salida.exe |
Y ejecutas desde la consola simplemente invocando al ejecutable (.exe).
Algo que debes saber es que en C++ la destrucción de objetos está garantizada con una llamada al destructor (delete), algo que es muy escurridizo en Java.
Un saludo. |
|
|
|
| Volver arriba |
|
|
Darkside-tk2 Usuario Activo

Registrado: 30 May 2011 Mensajes: 214 Ubicación: Portoviejo - Manabí - Ecuador
|
Publicado: Mar 20 Dic, 2011 03:37 am
Título del mensaje: Re: Clases y sus implementaciones |
|
|
Gracias por la aclaracion...
Si vi un poco de eso de destructores, otra forma que halle de hacerlo
es incluir ambos archivos en el main, pero eso ya es otra practica.
Entoces una cosa cuando hacemos un proyecto cosa que no se por que detesto se hace lo mismo que en la consola o sea que se compilan los 2...
Mmmm ya le empiezo a ver un poco más la importancia a esto de los projects |
Programador joven... Programar es compartir XD
Mis Proyectos, Guias y más.
C++ OWNS!
|
|
| Volver arriba |
|
|