小编jhe*_*dus的帖子

使用基于范围的for与std :: set <std :: unique_ptr <T >>删除的函数

我正在尝试使用基于范围的迭代器与一组unique_ptr实例,但我得到以下编译错误:

C2280: 'std::unique_ptr<Component,std::default_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : attempting to reference a deleted function
Run Code Online (Sandbox Code Playgroud)

代码的基础知识如下:

#include <set>
#include <memory>

std::set<std::unique_ptr<Component>>* m_components;

class Component
{
    void DoSomething(){};
};

void ProcessComponents()
{
    for (auto componentsIterator : *m_components)

    {
        componentsIterator->DoSomething();
        componentsIterator++;
    }
}
Run Code Online (Sandbox Code Playgroud)

知道为什么这会是一个问题或如何解决它?

c++ set unique-ptr deleted-functions c++11

2
推荐指数
1
解决办法
2757
查看次数

标签 统计

c++ ×1

c++11 ×1

deleted-functions ×1

set ×1

unique-ptr ×1