Programación General > C/C++

 como organizar el code en Dev-Cpp

<< < (2/3) > >>

Alfonsos1:
no sabia que era asi de sensillo!
gracias

Alfonsos1:
PD: se puede declarar clases de esta manera? (osea declarar clases afuera del main.cpp)

Geo:
Claro que se puede.
Es habitual tener dos archivos por clase: uno para la declaración y otro para la definición/implementación de la misma.

Alfonsos1:
recuerden que soy nuevo  :blink:

astaba (y aún estoy) aprendiendo c++ en el sitio "C con clase", y aí no me dice como declarar una clase, de hecho ni siquiera sabia que se pudiera declarar y definir las clases por separado, como si fueran funciones. Asi que: ¿como se hace?

otro problema es que intente seguir la logica del ejemplo de Geo pero no anda (si me anda para las funciones, pero no para las clases)

intente esto:
cree un archivo llamado clases.h con este codigo:


--- Código: C++ ---#ifndef CLASES_H//Es el mismo codigo del ejempo de Geo, pero remplace en donde decia "funcion" por "clase"#define CLASES_H class claseterr;//aqui INTENTE declarar la clase #endif 
luego cree un archivo llamado clases.cpp con este codigo:

--- Código: C++ ---#include "clases.h" class claseterr{ public:   int cordx;   int cordy;   distintosterr tipoterr;   claseterr()   {      tipoterr=vasio;   }};  
y al comienso del main.cpp puse:

--- Código: C++ ---#include "clases.h" 
EL error que me da es el siguiente:
elements of array `claseterr terreno[300]' have incomplete type

Epa:
Buenas, cuando uno dice definir una clase, no se refiere a la clase en si, sino a los metodos de la clase.

Cuando uno declara una clase, suele poner solo los prototipos de los metodos (a menos que quiera funciones inline, eso en el tutorial de conclase esta explicado), y despues las define en otro lado, aunque no es necesario que sea en un fichero aparte, es recomendable para que sea mas facil de leer.
La idea es la misma que cuando se hace un programa estructurado:

1-declaracion de funciones.
2-funcion main
3-definicion de funciones

Con la diferencia que las declaraciones se hacen dentro de la claseal y nombre de la funcion en la definicion (si se hace fuera de la clase) se le antepone el nombre de la clase seguido del operador de ambito ::

<tipo retorno> <nombreclase>::<nombre metodo>([lista parametros])
{
<cuerpo metodo>
}

te pongo un ejemplo sencillo haber si se entiende.

en el .h pones

--- Código: C++ ---  class MiClase{  public:    MiClase(){}; //constructor    ~MiClase(){}; //destructor    int leerdato();    void escribirdato(int d);    int potencia(unsigned int exponente);   private:    int dato;};  
y en el .c

--- Código: C++ ---  void MiClase::escribirdato(int d){  dato = d;} int MiClase::leerdato(){  return dato;} int MiClase::potencia(unsigned int exponente){  int i, n = 1;   for(i = 1; i <= exponente; i++)    n *= dato;   return n;}  
Espero que ahora se entienda mejor.

Saludos

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa