最近比较困扰一个问题 就是在能不能把命名空间的名字开成数组型
比如说我定义了两个命名空间 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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。