【发布时间】:2015-07-01 20:44:14
【问题描述】:
在将 unique_ptrs 向量正确循环到我自己的自定义对象时遇到问题。我在下面提供了伪代码,它没有完全充实,但专注于 for 循环。我想使用 C++11“for”循环,并遍历向量 - 或者从我听说的情况来看,提供自己的迭代器更好?当我有单独的课程时,我只是不知道该怎么做。如果我将向量保存在管理器类中,那么我应该在哪里定义迭代器方法?在对象类中,还是在管理器类中?我还想确保我的数据保持不变,因此无法更改实际值。
// Class for our data
Class GeoSourceFile
{
// some data, doesn't matter
double m_dNumber;
int m_nMyInt;
}
// singleton manager class
Class GsfManager
{
public:
// Gets pointer to the vector of pointers for the GeoSourceFile objects
const std::vector<std::unique_ptr<GeoSourceFile>>* GetFiles( );
private:
// Vector of smart pointers to GeoSourceFile objects
std::vector<std::unique_ptr<GeoSourceFile>> m_vGeoSourceFiles;
}
void App::OnDrawEvent
{
GsfManager* pGsfMgr = GsfManager::Instance();
for(auto const& gsf : *pGsfMgr->GetFiles() )
{
oglObj->DrawGeoSourceFile( file );
}
}
void OglClass::DrawGeoSourceFile( std::unique_ptr<GeoSourceFile> file )
{
//...
}
【问题讨论】:
标签: c++11 for-loop iterator stdvector unique-ptr