[C con Clase] Un fichero para cada clase

srd4121 en njit.edu srd4121 en njit.edu
Jue Dic 11 20:53:59 CET 2008


Hola Anónimo,

Mensaje citado por: User <usuarioanonimomysql en gmail.com>:

> Hola de nuevo, las extensiones hpp y cpp son para C++ y las extensiones h y
> c son para C, ¿verdad?

Sí. Se suele usar estas extensiones, aunque en el caso de C++ también se 
usa ".h".

> Las extensiones cpp y c son para el programa principal y las extensiones h y
> hpp son para las clases, ¿verdad?

No me atrevo a afirmar lo que dices, por los términos que usas. Expresaré lo 
que has dicho de otra manera. Los ficheros de cabecera (".h", ".hpp") 
contendrán las declaraciones de las clase y los ficheros fuentes 
(".c", ".cpp") contendrán las implementaciones de las funciones miembro. Por 
ejemplo,

// "miclase.h"

class miclase
{
private:
  int nDato;

public:
  miclase( int n=0 );

  void dato( int n );
  int &dato();
  int dato() const;
};


// "miclase.cpp"

#include "miclase.h"

miclase::miclase( int n ) : nDato(n)  {}

void miclase::dato( int n )
{
  nDato = n;
}

int &miclase::dato()
{
  return nDato;
}

int miclase::dato() const;
{
  return nDato;
}

Ahora sólo tienes que incluir "miclase.h" en otros ficheros fuentes que 
necesiten de tal clase. Eso sí, para el proyecto, todos los ficheros fuentes 
deben ser compilados y enlazados.


Sin embargo, si estás definiendo plantillas de clases, entonces no podrás 
separar las declaraciones de las implementaciones. Es una restricción de las 
plantillas.


Espero haber aclarado las dudas.

Steven





Más información sobre la lista de distribución Cconclase