在c++中如何使类的示例变量接受无限的参数?

wz3gfoph  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(188)

出于教学目的,我用c++重新创建了一个class list数据结构,其中包含了我想到的所有特性。
我想知道是否有一种方法可以让用户使用这种语法:

list my_list = {1, 2, 3, 4, 5};

或者如果可能的话,甚至是这个语法(我不认为它是,但我会问无论如何)...

list my_list = [1, 2, 3, 4, 5];

让我知道,如果唯一的方法是搞乱编译器,它不能与运算符重载。

wgx48brx

wgx48brx1#

这就是初始化器列表的作用。例如,你可以有一个如下的构造函数:

class list {
public:
    list(std::initializer_list<int> l) {
        for (int x : l) {
            // do something with x
        }
    }
};

或者使用模板使其更通用:

template<typename T>
class list {
public:
    list(std::initializer_list<T> l) {
        for (const auto &x : l) {
            // do something with x
        }
    }
};

相关问题