• ReDo UnDo的好例子

    一个非常好的例子 void CMyObjCollection::Add(CMyObject* pItem) { ASSERT(Find(pItem) == -1); // 不能多次加入同一对象 m_vecMyObjects.push_back(pItem); pItem->AddRef(); } void CMyObjCollection::Remove(CMyObject* pItem) { for (vector<CMyObject*>::iterator it = m_vecMyObjects.begin(); it != m_vecMyObjects.end(); it++) { if (*it == pItem) { m_vecMyObjects.erase(it); pItem->Release(); return; } } } void CMyObjCollection::RemoveAt(int index) { CMyObject* pItem = m_vecMyObjects[index]; m_vecMyObjects.erase(m_vecMyObjects.begin() + index); pItem->Release(); } void CMyObjCollection::Clear() { for (int i = 0; i < m_vecMyObjects.size(); i++) m_vecMyObjects[i]->Release(); m_vecMyObjects.erase(m_vecMyObjects.begin(), m_vecMyObjects.end()); } bool CMyObjCollection::Contains(CMyObject* pItem) { return (Find(pItem) != -1); } int CMyObjCollection::Find(CMyObject* pItem) { for (int i = 0; i < m_vecMyObjects.size(); i++) { if (m_vecMyObjects[i] == pItem) return i; } return -1; }

    0
    110
    24KB
    2010-01-05
    9
  • 创作能手

    授予每个自然周发布4篇到6篇原创IT博文的用户
关注 私信
上传资源赚积分or赚钱