sirve - Clases y espacios de nombres que comparten el mismo nombre en C++
para que sirve el using namespace std en dev c++ (3)
Puede especificar un nombre completamente calificado a partir de ::
que define el espacio de nombres global, por ejemplo:
namespace abc {
class foo {
int a;
int b;
};
}
namespace foo {
class abc {
::abc::foo a; // Changed from ''abc::a = 10;'' since it doesn''t compile
};
}
Digamos que tengo una clase llamada ''foo'' en el espacio de nombres "abc" ...
namespace abc {
class foo {
int a;
int b;
};
}
... y luego digo que tengo otra clase llamada "abc" en un espacio de nombres diferente
#include "foo.h"
namespace foo {
class abc {
abc::a = 10;
};
}
abc :: a no sería un tipo definido, porque estaría buscando la clase abc, no el espacio de nombres abc. ¿Cómo haría para referirme apropiadamente a un objeto en otro espacio de nombres, en el que ese otro espacio de nombres tuviera el mismo nombre que la clase en la que estoy?
Puede usar ::abc::xx
, es decir, identificar la variable o tipo como su ruta de espacio de nombres absoluta. Si no especifica un nombre absoluto, los nombres relativos comienzan a subir en los espacios de nombres / clases incluidos.
Puede utilizar un prefijo ::
para denotar a partir del espacio de nombres global, por lo que en su caso ::abc
denotaría el espacio de nombres abc
desde su primer fragmento de código.