Original Post
Hi, I'm been trying for a while to get a simple data storage class working, with respect to accessing the stored objects outside the class. I get this to output the number of terrain objects that I have added… But I don't succeed accessing individual terrain objects, been trying with code like this: I am obviously missing something essential as (*iter)-> doesn't seem to operate on my added objects. Help is appreciated. Regards /twinkle ;)
class Data
{
private:
vector<Terrain*> m_TerrainList; // list of terrain objects
public:
// constructor
Data();
// destructor
~Data();
// methods
void AddTerrain(Terrain* pTerrain);
void CleanUp();
// getters
vector<Terrain*> GetTerrainList() { return m_TerrainList; }
};
#endif
// constructor
Data::Data()
{
// reserve plenty of terrain object space
m_TerrainList.reserve(50);
}
// destructor
Data::~Data()
{
}
// add terrain object to data storage class
void Data::AddTerrain(Terrain* pTerrain)
{
// add terrain object
m_TerrainList.push_back(pTerrain);
}
// delete all stored data
void Data::CleanUp()
{
// remove all terrain objects
vector<Terrain*>::iterator iter;
for (iter = m_TerrainList.begin() ; iter != m_TerrainList.end() ; iter++)
{
delete (*iter);
m_TerrainList.erase(iter);
iter--;
}
}
TCHAR Dest[20];
LPTSTR Format = TEXT("Terrain objects: %i");
StringCbPrintf(Dest, 20*sizeof(TCHAR), Format, g_pData->GetTerrainList().size());
TextOut(hDC, 15, 300, Dest, 20);
size_t StringLength;
vector<Terrain*>::iterator iter;
iter = g_pData->GetTerrainList().begin();
StringCbLength((*iter)->GetName(), 10, &StringLength);
TextOut(hDC, 20, 400, (*iter)->GetName(), StringLength);