C ++名称空间元素

时间:2013-08-12 03:10:11

标签: c++ namespaces

我想获取名称空间元素名称和值...我该怎么做? 我想列出名称和值(已编辑)

例如

namespace testns{
  int stuff=4;
};

int index=0;

get_element_name(testns,index);
get_element_value(testns,int,index);

3 个答案:

答案 0 :(得分:4)

命名空间正如它在框中所说的那样,命名空间。您可以在许多模块中拥有相同的命名空间,您如何知道如何索引它们?什么是唯一正确的顺序?命名空间只是对元素进行分类,而不是以某种方式神奇地允许它们被编入索引。

C ++没有任何反射功能(我认为这就是你要找的东西)。你必须手动说出你想要的东西。

答案 1 :(得分:1)

您尝试做的是 reflection,,而C ++没有任何语言级内置方式为您执行此操作。只有少数事情可以做,例如在#中使用#define运算符,但是你使用#define s,我打赌这不是你想要的

您可以在功能上获得的最接近的事情是编写另一个程序,该程序读取您的源代码,挖掘命名空间信息,然后将其写入您可以#include其他位置的头文件。 GCC-XML extension在这方面可能会有所帮助,因为它使用G ++前端来解析语言,然后将语法树输出为XML,您可以使用任意数量的XML DOM解析器读取它。

答案 2 :(得分:0)

要访问变量内容,请执行以下操作:

//Setting
testns::stuff = 10;

//Getting
int stuff_value = testsn::stuff;

命名空间的目的是消除使用类似命名法的代码之间的歧义。