2010-05-17 2 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을 사용해야합니다. 그런 다음 요소 액세스 및 대체를위한 배열처럼 사용할 수 있습니다.