引用已删除的函数数组

时间:2017-09-07 22:03:21

标签: c++ smart-pointers

我想在std::vector内返回一个实体,但编译器告诉我我正在引用已删除的函数。

vector<unique_ptr<Node>> children;        //member of a class

unique_ptr<Node> Node::selectNext() {    //function for a class
    for (int i = 0; i < children.size(); i++) {
        if (children[i]->getUI().mouseSelect())
            return children[i];           //Problem is in this return statement
    }
    return nullptr;
}

我认为编译器与智能指针冲突。

这可能是一个相对容易解决的问题,但我不确定我做错了什么。问题可能比这更大,因为这个类是一个节点类。

1 个答案:

答案 0 :(得分:4)

你不能分享独特的ptrs。

Node* Node::selectNext() {    //function for a class
  for (int i = 0; i < children.size(); i++) {
    if (children[i]->getUI().mouseSelect())
        return children[i].get();
  }
  return nullptr;
}