C++ 如何";通行证;名称空间作为参数?
如果我有以下代码:C++ 如何";通行证;名称空间作为参数?,c++,namespaces,C++,Namespaces,如果我有以下代码: void foo1() { NS1::Type1 instance1; NS1::Type2 instance2; NS1::Type3 instance3; } void foo2() { NS2::Type1 instance1; NS2::Type2 instance2; NS2::Type3 instance3; } 如何分解这个函数 我可以从NS1调用foo1,从NS2调用foo2 如何“传递”名称空间作为参数 没
void foo1()
{
NS1::Type1 instance1;
NS1::Type2 instance2;
NS1::Type3 instance3;
}
void foo2()
{
NS2::Type1 instance1;
NS2::Type2 instance2;
NS2::Type3 instance3;
}
如何分解这个函数
我可以从NS1调用foo1,从NS2调用foo2
如何“传递”名称空间作为参数
没有办法做到这一点
如果使用类而不是名称空间,则可以为您的FOO编写可重用模板:
struct NS1 {
using Type1 = int;
using Type2 = float;
using Type3 = std::string;
};
struct NS2 {
using Type1 = long;
using Type2 = double;
using Type3 = std::string;
};
template<class T>
void foo() {
typename T::Type1 instance1;
typename T::Type2 instance2;
typename T::Type3 instance3;
}
结构NS1{
使用Type1=int;
使用类型2=浮动;
使用Type3=std::string;
};
结构NS2{
使用类型1=长;
使用类型2=双;
使用Type3=std::string;
};
模板
void foo(){
typename T::Type1实例1;
typename T::Type2实例2;
typename T::Type3实例3;
}
您的意思是
使用名称空间NS1代码>和使用名称空间NS2代码>?如果没有,你的问题是什么?你到底想做什么?也许这是我工作的项目中的一个例子,有许多重复的代码,只是使用的名称空间不同而已。所以我试图找到一种方法来分解它们。我可以使用模板,但类名是相同的;唯一的区别在于名称空间。使用模板可能意味着很多模板。我想避免使用类。我要看看是否可以使用内联名称空间。。。