Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何";通行证;名称空间作为参数?_C++_Namespaces - Fatal编程技术网

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?如果没有,你的问题是什么?你到底想做什么?也许这是我工作的项目中的一个例子,有许多重复的代码,只是使用的名称空间不同而已。所以我试图找到一种方法来分解它们。我可以使用模板,但类名是相同的;唯一的区别在于名称空间。使用模板可能意味着很多模板。我想避免使用类。我要看看是否可以使用内联名称空间。。。