CObList

If it is necessary to store a class or struct, a CObList can be used. The following is a simple sample of using a CObList:

class CStringObject : public CObject {
	DECLARE_DYNAMIC(CStringObject)
public:
        CString m_String;
};
IMPLEMENT_DYNAMIC(CStringObject, CObject)
    CStringObject *pStringObject;
    POSITION ObjectListPos;
    CObList ObjectList;
pStringObject = new CStringObject;
pStringObject->m_String = "First Object";
ObjectListPos = ObjectList.AddTail(pStringObject);
pStringObject = new CStringObject;
pStringObject->m_String = "Last Object";
ObjectListPos = ObjectList.AddTail(pStringObject);
ObjectListPos = ObjectList.GetHeadPosition();
while (ObjectListPos!=NULL) {
    pStringObject = (CStringObject *) ObjectList.GetNext(ObjectListPos);
    TRACE1("%s\n", pStringObject->m_String);
    delete pStringObject;
    }
ObjectList.RemoveAll();

See my Visual C++ Programmer Stuff page for more C++ stuff.