在下面的代码中,如何使用列表b来创建object_b,方法与使用列表a手动创建object_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?
}
答案 0 :(得分:0)
我最好的解决方案:
#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;
}
有更好的想法吗?没有引入全局变量的任何方式?
答案 1 :(得分:0)
您是否要求使用与std :: list相同的语法构造对象?
您可以使用std :: initializer_list来实现此目的。
class Object{
Object(const std::initialize_list<int>& vars)
{
// do stuff with the vars.
}
};
然后你可以做
Object my_object = {1, 2, 3, 4};