我基本上是重新设置容器,我想知道如何通过大括号封装的初始化程序列表到容器。C++自定义容器通过{}列表
mySet<int> myset = {"test", "test 2"};
我试图重载operator =以列表作为参数。
我基本上是重新设置容器,我想知道如何通过大括号封装的初始化程序列表到容器。C++自定义容器通过{}列表
mySet<int> myset = {"test", "test 2"};
我试图重载operator =以列表作为参数。
尽管这里存在=
,但这是构造一个集合,所以您需要的是一个构造函数(以std::initializer_list
作为参数)。
template<class T>
class myset {
public:
// ...
mySet(std::initializer_list<T> init) {
for (T const &t : init)
insert(t);
}
};
你需要实现一个构造函数,采取std::initializer_list
作为它的参数,如:
template <class T>
class mySet {
public:
mySet(std::initializer_list<T> l) {
// ...
}
};
定义一个构造函数一个std::initializer_list
作为参数,如
mySet(std::initializer_list<T> args){/*...*/}
operator=
调用只在作业上,而不在copy initialization(您的情况)。在后一种情况下,构造函数在rhs上被调用,然后是复制(或移动),通常会被删除,但复制或移动ctors必须是可访问的。