Je suis en train d'écrire une bibliothèque de journal qui utiliserait un outil externedétection espace de noms
Pour rendre la bibliothèque plus utiliser naturelle, je voudrais être en mesure de détecter l'espace de noms dans lequel Cout est utilisé.
concrètement le résultat devrait être utilisé comme celui-ci
namespace A
{
void foo()
{
cout << "Something went very wrong" << endl;
}
}
namespace B
{
void bar()
{
cout << "C should equal 3" << endl;
}
}
int main()
{
B::bar();
A::foo();
}
et la sortie résultante devrait ressembler à ceci
MODULE::B : C should equal 3
MODULE::A : Something went very wrong
J'utilise déjà std::streambuf
ajouter certains mots-clés à la sortie de Cout, i tous doit être capable de spécifier quel streambuf utiliser dans quel namespace.
Comment puis-je y parvenir?
La bibliothèque que je crée doit également être intégrée dans un projet avec plusieurs espaces de noms qui font un usage intensif de la déclaration using namespace
. J'aurais besoin d'une solution qui ne nécessitera pas de supprimer ces déclarations.
edit1: Je ne me soucie pas d'avoir à spécifier manuellement l'espace de noms est associé à quelle chaîne ou en ajoutant des objets à l'un des espaces de noms utilisés (sauf std
bien sûr)
Le compilateur ne vous dit-il pas déjà que quelque chose ne va pas avec 'A :: bar()' et 'B :: foo()'? –
Possible duplicate - http://stackoverflow.com/q/10657711/2065121 –
@AndyProwl c'était une faute de frappe, merci de l'avoir remarqué – tiridactil