Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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++_Templates_Variadic - Fatal编程技术网

C++ 可变模板构造模板列表

C++ 可变模板构造模板列表,c++,templates,variadic,C++,Templates,Variadic,在下面的代码中,如何使用列表b来创建对象_b,就像使用列表a手动创建对象_a一样 #include <list> template <int...Args> class Object {}; int main() { std::list<int> a = {1,2,3,4,5}; Object<1,2,3,4,5> object_a; std::list<int> b; // do whateve

在下面的代码中,如何使用列表b来创建对象_b,就像使用列表a手动创建对象_a一样

#include <list>

template <int...Args>
class Object {};

int main() {
    std::list<int> a = {1,2,3,4,5};
    Object<1,2,3,4,5> object_a;
    std::list<int> b;
      // do whatever with b
    // Object< ? > object_b;  // how to use b to create object_b?
}
#包括
样板
类对象{};
int main(){
列表a={1,2,3,4,5};
对象a;
std::列表b;
//对b做什么都行
//Object<?>Object_b;//如何使用b创建Object_b?
}
我的最佳解决方案是:

#include <list>

template <std::list<int>& L>
class Object {};

std::list<int> globalList;

int main() {
    std::list<int> a = {1,2,3,4,5};
    globalList = a;
    Object<globalList> object_a;
}
#包括
样板
类对象{};
std::列出全球列表;
int main(){
列表a={1,2,3,4,5};
globalList=a;
对象a;
}

还有更好的主意吗?有没有办法不引入全局变量?

您是否要求能够使用与std::list相同的语法构造对象

您可以使用std::initializer\u list来实现这一点

class Object{

    Object(const std::initialize_list<int>& vars)
    {
          // do stuff with the vars. 
    }
};

这在C++中是不可能的。无法将运行时对象转换为编译时模板。
列表a
未用于创建
对象a
(手动或其他方式)。这是不可能的。也许你想改用
std::tuple
?好吧,我使用a的元素创建了带有模板参数的对象。只要我可以在类中使用这些元素来做任何事情,我更改模板的性质就可以满足我的需要。但我现在不喜欢全局变量进入画面。我认为0x499602D2使用std::tuple的建议将避免创建全局变量,对吗?@cantcooseUserNames。对不起,我没有看到你的链接。谢谢你帮我把代码打出来。非常感谢,不用了。对象不是单个类,而是由(任意多个)整数以任何形式参数化的一系列类。然后,我想使用已知的int列表(或元组或其他)创建对象族的特定类的实例。
Object my_object = {1, 2, 3, 4};