Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





problemas con namespaces en c++

Iniciado por swapd0, 10 de Noviembre de 2010, 11:50:24 PM

« anterior - próximo »

swapd0

Hola

Estoy haciendo unas librerias y para "evitar problemas" (por ahora me están dando mas  :grrr:) he decidido crearlas dentro de un namespace.

Esto seria en un fichero de configuracion que es incluido por todos los ficheros de la libreria.

#if CAD_USE_NAMESPACE
#define CAD_NAMESPACE cad
#define CAD_BEGIN_NAMESPACE namespace CAD_NAMESPACE {
#define CAD_END_NAMESPACE }
#define CAD_USING_NAMESPACE using namespace CAD_NAMESPACE
#else
#define CAD_NAMESPACE
#define CAD_BEGIN_NAMESPACE
#define CAD_END_NAMESPACE
#define CAD_USING_NAMESPACE
#endif



El modo de empleo se supone que seria asi.

CAD_BEGIN_NAMESPACE

class foo
{
...
};

CAD_END_NAMESPACE

// y esto en el cpp
CAD_USING_NAMESPACE
foo::foo()
...
foo::cargar()
{
    BOOST_FOREACH(...)
    {
        ...
    }
}


El problema es que me encuentro con un monton de errores (1998 por ahora), creo que la mayoria es porque al usar el using namespace xxx intenta buscar todo ahi, yo creia que si no lo encuentra en el namespace actual lo busca los que hayas añadido usando using:

   - El BOOST_FOREACH lo intenta buscar en cad::boost::foreach  >:(
   - si uso una clase de otra libreria hecha igual tengo que poener cosas como FOO_NAMESPACE::foo xxx::devuelveFoo().

¿Alguna forma de arreglar esto, o alguna forma mejor de hacerlo (no usar los namespaces no vale ;))?



swapd0

Ups, solucionado.

Tenia en un fichero un CAD_BEGIN_NAMESPACE sin un CAD_END_NAMESPACE al final y por eso me fastidiaba todo... jope una hora perdida buscando el error.  :-[






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.