我想将一些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!?
}
我已经研究并尝试了许多可能的解决方案,但是一切似乎都有陷阱。例如:
consts
;如果他们认为我可以解决一些问题。static
初始化程序不好,尤其是对于用户定义的类型。initializeNs1Vars()
和vector<myC*> getNs1Vars()
。我不记得那个出了什么问题。也许这是我最有前途的路线?extern
进行添加似乎只是增加了很多代码。编辑:好的,名称空间中的变量是隐藏的全局变量。还有另一种以更紧凑的方式定义大量变量的方法吗?
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
}