首页 > 解决方案 > 源之外的命名空间定义

问题描述

我想将一些myClass对象放在命名空间中并在我的主要功能中使用它们。以下策略有效,但命名空间定义占用了很多行,用户真的不需要看到它们。

如何将命名空间/变量初始化移动到包含的文件中?

// Main.C:
namespace Ns1{
    myClass* mycA = new myClass(constant1A);
    myClass* mycB = new myClass(constant1B);
    /// ... lots more vars
}

namespace Ns2{
    myClass* mycA = new myClass(constant2A);
    myClass* mycB = new myClass(constant2B);
    /// ... all/many of the same vars as in ns1
}

void main(){
  int param = 0; // param determined in main()
  Ns1::mycA->setOtherVars(param);
  Ns2::mycB->accessSomething();
  // clean up!?
}

我研究并尝试了很多可能的解决方案,但一切似乎都有陷阱。例如:


编辑:好的,命名空间中的变量是隐蔽的全局变量。是否有另一种方法以更紧凑的方式定义大量变量?

void main(){
  myClass* mycA_1 = new myClass(constant1A);
  myClass* mycB_1 = new myClass(constant1B);
  //... lots more objects
  myClass* mycA_2 = new myClass(constant2A);
  myClass* mycB_2 = new myClass(constant2B);
  //... lots more objects

  // as before
}

标签: c++namespaces

解决方案


推荐阅读