Dou*_*oid 0 c++ stdvector unique-ptr c++11
我有一个矢量:
std::vector<std::unique_ptr<MyAbstract>> myList;
Run Code Online (Sandbox Code Playgroud)
我想在循环中访问成员"id"并删除特定项目:
for (auto it = myList.begin(); it != myList.end();)
{
if (it->id == 2)
{
it = myList.erase(it);
break;
}
else
++it;
}
Run Code Online (Sandbox Code Playgroud)
这条线......
if (it->id == 2)
Run Code Online (Sandbox Code Playgroud)
给我一个错误:
'class std :: unique_ptr'没有名为'id'的成员
这似乎有效:
if (it->get()->id == 2)
Run Code Online (Sandbox Code Playgroud)
我想知道为什么?!这是完整的代码:http: //ideone.com/kFohfA
it是一个迭代所以it->试图访问(存储在矢量的类型的成员std::unique_ptr<MyAbstract>)不是MyAbstract的std::unique_ptr成立.您需要做的是取消引用迭代器以获取底层std::unique_ptr<MyAbstract>,然后您可以MyAbstract使用->like 访问成员
(*it)->id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |