2010-05-17 6 views
0

Предполагая, что такое определение, как это,Список <MyClass*> и массив вопрос

void CConfigTest::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
{ 
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; 
    TVITEM item = pNMTreeView->itemNew; 
    // find the session of the selected item 
    if(item.hItem != NULL) 
    { 
     HTREEITEM root, parent, node; 
     node = item.hItem; 
     parent = m_treeSM.GetParentItem(item.hItem); 
     root = m_treeSM.GetRootItem(); 

     while(parent != root && parent != NULL) 
     { 
      node = parent; 
      parent = m_treeSM.GetParentItem(parent); 
     } 

     MyCommand* pCmd = (MyCommand*)(m_treeSM.GetItemData(node)); 
       .... 
       .... 

Я пробовал эти заявления ниже, но не удалось.

pCmd->subList[2] 
(pCmd->subList)[2] 

Как получить значения элемента массива (такие как subList [2]). Я хочу заменить значение subList [2] на другое значение такого же типа. Спасибо.

+1

Образец кода кажется ошибкой. m_treeSM.GetItemData никак не связана с subList. – sonofdelphi

+0

также, pCmd не будет иметь subList в качестве члена. Так что pCmd-> subList не удастся. – sonofdelphi

+0

Это только код фрагмента. На самом деле существует режим ** загрузки файла ** для загрузки полного файла в память. Это работает очень хорошо. :-) –

ответ

1

Списки не поддерживают случайный доступ. Вам нужно переключиться на другой тип контейнера, который делает или перебирает список, пока не достигнет нужного элемента.

1

Если вы хотите упорядочить как поведение и использовать оператора нижнего индекса, вы должны использовать std::vector, а не std::list. Затем вы можете использовать его так же, как массив для доступа и замены элементов.