in meinem C++ - Programm Ich habe mehrere Namespaces, die mehrere Zeiger mit identischen Namen enthalten. Ich möchte dann eine Funktion einen Namespace nach einem Parameter auswählen. I.e. etwas wie:Switch-Namespace von If-Bedingung
#include <iostream>
namespace ns1{
double x[5]={1,2,3,4,5};
}
namespace ns2{
double x[5]={6,7,8,9,10};
}
int main(){
int b=1;
if(b==1){
using namespace ns1;
}
if(b==2){
using namespace ns2;
}
std::cout << x[3] << std::endl;
}
Dies funktioniert jedoch nicht, da der Compiler beklagt, dass x in diesem Bereich nicht bekannt ist. Ich schätze das Problem ist, dass "using namespace ..." nur in der if-Anweisung gültig ist. Ich denke, dass es möglich sein sollte, Namespaces irgendwie zu wechseln, kann aber nicht herausfinden, wie ... Wissen Sie, wie Sie dies tun, ohne alle Variablen separat zu übertragen?
int main(){
int b=1;
double *x;
if(b==1){
x = ns1::x;
}
if(b==2){
x = ns2::x;
}
std::cout << x[3] << std::endl;
}
Cheers, Pascal
ah, das wusste ich nicht. Also, eine Klasse definieren, die alles enthält, was in einem Arbeitsbereich enthalten ist, und das Casting wäre der eleganteste Weg? – pascal
@ user575873: wahrscheinlich nicht, obwohl es funktionieren könnte. Das hört sich einfach nicht richtig an - warum brauchen Sie einen Namespace, wenn Sie ihn alle in eine Klasse einbinden wollen? Nochmals, ich schlage vor, Sie öffnen eine neue Frage und erklären genau, was Sie damit erreichen wollen. –
Sie hatten Recht. Ich habe herausgefunden, dass Klassen besser zu meinem Problem passen. – pascal