Joh*_*son 0 c++ initialization initialization-list c++11
我正在学校里完成一项任务,我们应该在我们自己的List类中创建一个构造函数,它将初始化列表作为参数.
这是我希望能够做到的:
List ourList {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止:
List::List(std::initializer_list<int> il)
{
head_ = copy(il.begin(), il.end());
}
List_Node* List::copy(std::initializer_list<int>::iterator begin,
std::initializer_list<int>::iterator end)
{
if(begin == end)
return nullptr;
List_Node* new_list = new List_Node(*begin);
List_Node* node = copy(begin++, end);
new_list->next_ = node;
return new_list;
}
Run Code Online (Sandbox Code Playgroud)
以我的拙见,这应该很有效.但是,当我尝试初始化(List list {1,2,3};)时,我得到一个seg-fault.有人可以解释一下我在这里做错了吗?
List_Node* node = copy(begin++, end);
Run Code Online (Sandbox Code Playgroud)
这将copy使用相同的参数再次调用,永远递归并永远不会完成.
您应该能够通过使用调试器来查看它崩溃的位置,并且您会看到有数百个调用List::copy,而不是您预期的三个调用.
你++begin不想要begin++
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |