开发者社区> 问答> 正文

在想能不能把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
于是就纠结了....

展开
收起
a123456678 2016-03-04 10:34:28 2485 0
3 条回答
写回答
取消 提交回答
  • 乐于学习与分析

    还是不要用这种的好

    2019-07-17 18:51:55
    赞同 展开评论 打赏
  • 软件开发,安全加密

    还是不要用这种的好

    2019-07-17 18:51:54
    赞同 展开评论 打赏
  • #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
    2019-07-17 18:51:54
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载