在想能不能把c++命名空间的名称开成数组型

最近比较困扰一个问题 就是在能不能把命名空间的名字开成数组型
比如说我定义了两个命名空间 namespace solar0 和 namespace solar1
然后在一个函数中使用 比如说在函数 void system(int k) 中选择性使用

比如

void system(int k)
{
    if(k==0) using namespace solar0;
    if(k==1) using namespace solar1;
    .........
}

但是我一旦用if 编译器就给我报错 说下面的对象未定义(下面的对象我在命名空间里定义了)
然后我就想啊,能不能把solar开成数组 变成solar[2] 就是不会搞
比如

void system(int k)
{
    using namespace solar[k];
    .........
}

再一次失败..

而且我也不知道 这个名字solar是一个什么类型,指针也没法指
有考虑过用 #define solar(k) solar##k 结果编译的时候变成solark了
不是想要的:当k=0时候出现solar0
于是就纠结了....
各位大侠们求帮助啊.... 小弟在读高三..

#include <iostream>
namespace myspace1
{
    int bj=15;
}
namespace myspace2
{
    int i=20;
}
#define paster( n ) using namespace myspace##n

int main()
{
        paster( 1 );
        std::cout<<bj<<std::endl;
    return 0;
}

我在VS2010上可以运行啊...

但是不知道你为什么你要以这种方式用命名空间...很容易混淆的...然后就空间污染了...

我感觉直接用宏定义就可以了.可以这么定义:

#DEFINE XXX
#IFDEFINE XXX
using namespace space1
#ELSE
using namespace space2
#ENDIF

namespace是在编译的时候用来确定标识符全名的,无法在运行时更改。
你的需求可以用类场模式来实现。

试试条件编译,,看看怎么样

这个问题条件编译是解决不了本质的,支持一楼