如何使用大括号 {} 初始化 class 的对象

How to initialize an object of a class using curly brackets {}

我希望使这段代码编译无误(并且不使用 std::initializer_list) 这是代码:

template<typename T>
class Vector {
public:
    T* Arr;
    int Size = 0;
    int Capacity = 1;
    Vector();
};

template<typename T>
Vector<T>::Vector() {
    Arr=new T[1];
}
int main()
{
    Vector<int>V1 = { 1,2,3,4,5 };
}

这是错误:

Error C2440: 'initializing': cannot convert from 'initializer list' to 'Vector<int>'

How to initialize an object of a class using curly brackets {}

Vector<int>V1 = { 1,2,3,4,5 };

选项 1:使用 std::initializer_list

(and without using std::initializer_list)

好吧,那么使用其他选项之一:

选项 2:使 class 成为聚合。您使用 {x, y, z} 初始化 class 的成员。这种方法与您的示例不兼容。

选项 3:使用可变模板构造函数,例如:

template<class... Args>
Vector(Args&& ...args)