我基本上是重新設置容器,我想知道如何通過大括號封裝的初始化程序列表到容器。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必須是可訪問的。