[C con Clase] Duda con namespace

Leonel Florin Selles leonel06033 en cfg.jovenclub.cu
Mie Dic 1 17:14:04 CET 2010


Amigo tiene razón he realizado las cosas como las dices pero cuando tengo
tengo hecho me da este error que podrá ser

/usr/include/c++/4.3/cstdlib:207: error: '__gnu_cxx::lldiv_t' has not been
declared
/usr/include/c++/4.3/cstdlib:209: error: '__gnu_cxx::_Exit' has not been
declared
/usr/include/c++/4.3/cstdlib:210: error: '__gnu_cxx::abs' has not been
declared
/usr/include/c++/4.3/cstdlib:212: error: '__gnu_cxx::llabs' has not been
declared
/usr/include/c++/4.3/cstdlib:213: error: '__gnu_cxx::div' has not been
declared
/usr/include/c++/4.3/cstdlib:214: error: '__gnu_cxx::lldiv' has not been
declared
/usr/include/c++/4.3/cstdlib:216: error: '__gnu_cxx::atoll' has not been
declared
/usr/include/c++/4.3/cstdlib:217: error: '__gnu_cxx::strtof' has not been
declared
/usr/include/c++/4.3/cstdlib:218: error: '__gnu_cxx::strtoll' has not been
declared
/usr/include/c++/4.3/cstdlib:219: error: '__gnu_cxx::strtoull' has not
been declared
/usr/include/c++/4.3/cstdlib:220: error: '__gnu_cxx::strtold' has not been
declared



> Hola Leonel,
>
> 2010/11/30 Leonel Florin Selles <leonel06033 en cfg.jovenclub.cu>
>
>> Hola amigos:
>>
>> como puedo utilizar un namespace creado por mi en una clase que no
>> pertenece al namespace.
>
>
> [CORTE]
>
>
>> Yo también tengo incluido MyNameSpace dentro del main(), porque aqui
>> tambien necesito utilizar estos obejtos, y por esta razon es que obtengo
>> el error
>>
>> multiple definition of ObjetoClase1
>> multiple definition of ObjetoClase2
>>
>> como puedo utilizar el namespace en varios lugares sin que suceda este
>> error, por ejemplo cuando utilizo el "using namespace std;" este lo
>> puedo
>> agregar donde yo quiera que nunca me da esots problemas, que estoy
>> haciendo mal, algun consejo, trabajo sobre KDEVELOP.
>
>
> Realmente tienes tres problemas: dos errores y un problema del espacio
> denominado.
>
> Un error es lógico, acerca de las directivas del precompilador. Escribes:
>
> #ifdef MYNAMESPACE_H
> #define MYNAMESPACE_H
> ...
>
> Cuando debería ser:
>
> #ifndef MYNAMESPACE_H
> #define MYNAMESPACE_H
> ...
>
> Quieres comprobar el caso de que 'MYNAMESPACE_H' no exista, para poder
> definirla.
>
> El otro error de enlazado está en que defines dos objetos del mismo nombre
> en el mismo espacio denominado y en el mismo ámbito. Esto contradice "la
> regla de una sola definición" en C/C++. La solución es definir los objetos
> una sola vez y luego redeclaralos donde los necesites. En tu caso, esto
> sería,
>
> // "MyNamaSpace.h"
>
> #ifndef MYNAMESPACE_H
> #define MYNAMESPACE_H
>
> #include "clase1.h"
> #include "clase2.h"
>
> namespace MyNamaSpace
> {
> // Declaraciones
> extern clase1 ObjetoClase1;
> extern clase2 ObjetoClase2;
> }
>
> #endif
>
> Y luego definimos estos objetos en otro fichero fuente, que puede ser por
> ejemplo "MyNamaSpace.cpp", como mencionó Rubén; por ejemplo,
>
> // "MyNamaSpace.cpp"
>
> #include "MyNamaSpace.h"
>
>  namespace MyNamaSpace
> {
> // Definiciones
> clase1 ObjetoClase1;
> clase2 ObjetoClase2;
> }
>
>
> En cuanto al otro problema, acerca del espacio denominado, simplemente
> engloba los contenidos de ambos ficheros de cabecera que incluyes en
> "MyNamaSpace.h"; esto es,
>
>  // "MyNamaSpace.h"
>
> #ifndef MYNAMESPACE_H
> #define MYNAMESPACE_H
>
>  namespace MyNamaSpace
> {
> #include "clase1.h"
> #include "clase2.h"
>
> // Declaraciones
> extern clase1 ObjetoClase1;
> extern clase2 ObjetoClase2;
> }
>
> #endif
>
> Ahora las clases serán definidas en el espacio 'MyNamaSpace', pero
> solamente
> desde dentro del fichero de cabecera "MyNamaSpace.h". Si #incluyes los
> otros
> dos ficheros de cabecera directamente en otro ficheros, entonces esas
> definiciones serán globales.
>
>
> Espero que todo esto aclare las dudas.
>
> Steven
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ






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