Неправильное обращение через вектор unique_ptrs к моему собственному пользовательскому объекту. Я предоставил псевдокод ниже, который не полностью сфокусирован, но сфокусируйтесь на цикле for. Я хотел бы использовать цикл C++ 11 «for» и перебирать векторы - ИЛИ из того, что я слышал, лучше, если ваши собственные итераторы? Я просто не знаю, как это сделать, когда у меня есть отдельные классы. Если я сохраняю вектор в классе менеджера, то где я должен определять методы итератора? В классе объекта или в классе менеджера? Я также хочу убедиться, что мои данные остаются const, поэтому фактические значения не могут быть изменены.C++ 11 для сквозного вектора unique_ptr
// 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)
{
//...
}