[C con Clase] Problemas con los header e includes

antonio antonio en sajoma.es
Mie Dic 21 14:06:41 CET 2011


Aclarado.

Ahora ya tengo el concepto. En una clase A se pueden hacer declaraciones adelantadas a clases que
tengan un objeto ó puntero a la clase A.

Muchas gracias.

-----Mensaje original-----
De: Salvador Pozo [mailto:salvador en conclase.net] 
Enviado el: martes, 20 de diciembre de 2011 18:32
Para: cconclase en listas.conclase.net
Asunto: Re: [C con Clase] Problemas con los header e includes

El pasado 2011-12-20 16:58:02, jagse escribió:
 
j> Hola a todos:

j> Tengo un problema de concepto que no me salgo.
j> Tiene que ver con los headers y con los includes.
j> ...

Hola:

Las declaraciones adelantadas de las clases A y B en la cabeceras B.h y A.h, respectivamente, son correctas. Esto es porque es la única forma de resolver este tipo de declaraciones recursivas.

Pero lo mismo no se aplica a la clase C, ya que aunque C incluye punteros a objetos de las clases A y B, estas a su vez no incluyen objetos de la clase C.

De modo que en C.h no necesitas hacer declaraciones adelantadas, bastará con incluir los ficheros de cabecera necesarios.

Sustituye las declaraciones adelantadas en C.h por includes:

----8<------
#ifndef C_H_
#define C_H_

#include "A.h"
#include "B.h"

#include <string>
#include <vector>
#include <iostream>

using namespace std;

class C{
private:
...
----8<------

En main puedes incluir los tres ficheros de cabecera, aunque bastaría con incluir C.h. Las macros se encargan de que no se produzcan declaraciones repetidas.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net





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