[Kde-devel-es] Compartir una constante en varios ficheros

Eloy Cuadra kde-devel-es@mail.kde.org
Mon, 02 Dec 2002 19:57:09 +0100


Hola José Manuel,

El Dom, 1 Dic 2002 a las 18:39:59 Jose Manuel Valladares Pernas escribió:

> quiero compartir una constante entre varios ficheros
> de mi programa, asi que cree un fichero llamado
> resources.cpp que solo include la linea:
> 
> extern const int num_texts = 5;
> 
> Es el primer fichero que se compila en el Makefile.
> 
> En los ficheros .h que necesito usar la constante
> utilizo:
> 
> extern const int num_texts;
> 
> Y luego:
> KEditLine *editText[num_texts];
> 
> Pero cuando intento compilar me sale el error:
> 
> categorydlg.h:39: size of member `editText' is not
> constant 
> 
> ?Que estoy haciendo mal?
> No lo entiendo.

Vayamos por partes...

El error aparece en un archivo de cabecera (categorydlg.h), por lo que 
veo que estás declarando editText en su interior. Supongo que tendrás un 
archivo categorydlg.cpp (o similar), y es ahí donde yo pondría esa 
variable. Si la vas a usar en otros archivos c/cpp, la puedes declarar, 
además, como externa en algún archivo de cabecera.

Y luego, la mejor forma de declarar una constante es utilizar una 
sentencia #define en un archivo de cabecera (si piensas usarla en más de 
un archivo c/cpp).

Resumiendo, yo utilizaría esto:

myinc.h
-------

  #define num_texts     5

  extern KEditLine *editText[num_texts];



prog.cpp
--------

  [tus includes]
  #include "myinc.h"

  KEditLine *editText[num_texts];

  [...]


Esto debería funcionar ;-)

El archivo myinc.h lo puedes incluir en cualquier c/cpp donde necesites 
usar la variable editText.

Saludos,

Eloy