我想在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;
}
我认为编译器与智能指针冲突。
这可能是一个相对容易解决的问题,但我不确定我做错了什么。问题可能比这更大,因为这个类是一个节点类。
答案 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;
}