2010-05-17 4 views
0

En supposant une définition comme celui-ci,Liste <MyClass*> & tableau question

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)); 
       .... 
       .... 

J'ai essayé ces déclarations ci-dessous, mais a échoué.

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

Comment puis-je obtenir les valeurs de membre de groupe (telles que subList [2]). Je veux remplacer la valeur de subList [2] par une autre valeur de même type. Je vous remercie.

+1

l'exemple de code semble être une erreur. m_treeSM.GetItemData ne semble être lié à subList d'aucune façon. – sonofdelphi

+0

aussi, pCmd n'aura pas subList en tant que membre. Alors pCmd-> subList échouera. – sonofdelphi

+0

C'est un code d'extrait seulement. En fait, il existe un comportement ** load file ** pour charger un fichier complet en mémoire. Cela fonctionne plutôt bien. :-) –

Répondre

1

Les listes ne prennent pas en charge l'accès aléatoire. Vous devez passer à un autre type de conteneur qui le fait, ou parcourir la liste jusqu'à ce que vous atteigniez l'élément souhaité.

1

Si vous voulez adopter un comportement similaire à celui d'un indice et utiliser l'opérateur d'indice, vous devez utiliser std::vector et non std::list. Ensuite, vous pouvez l'utiliser comme un tableau pour accéder et remplacer des éléments.