如何使用大括号 {} 初始化 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)
我希望使这段代码编译无误(并且不使用 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)