2010-05-17 25 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 2010-05-17 06:11:26

+0

也,pCmd将不具有subList作为成员。 所以pCmd-> subList将会失败。 – sonofdelphi 2010-05-17 06:12:36

+0

这只是一个代码段代码。实际上有一个**加载文件**行为来加载一个完整的文件到内存。它工作得很好。 :-) – 2010-05-17 06:13:26

回答

1

列表不支持随机访问。您需要切换到另一个容器类型,该容器类型在列表中迭代,直到达到所需的元素。

1

如果你想排列行为和使用下标操作符,你应该使用std::vector而不是std::list。然后,您可以像访问和替换元素一样使用它。