【问题标题】:List<MyClass*> & array questionList<MyClass*> & 数组问题
【发布时间】:2010-05-17 06:01:28
【问题描述】:

假设这样的定义,

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] 的值。谢谢。

【问题讨论】:

  • 代码示例似乎是一个错误。 m_treeSM.GetItemData 似乎没有以任何方式链接到 subList。
  • 另外,pCmd 不会有 subList 作为成员。所以 pCmd->subList 会失败。
  • 这只是一个sn-p代码。实际上有一个 load file 行为来将一个完整的文件加载到内存中。它工作得很好。 :-)
  • 你需要提供更好的sn-p。其他评论者的矢量评论是正确的。
  • 我更新它们。 OnSelchangedTree() 是加载文件后选择不同节点时的控制函数。我只想动态修改子节点项(数组项)值并将更新值应用到另一个 CWin Obj 以供使用。这不会导致我修改原始文件。

标签: c++ arrays list pointers


【解决方案1】:

列表不支持随机访问。您需要切换到另一种容器类型,或者遍历列表直到找到您想要的元素。

【讨论】:

    【解决方案2】:

    如果您想排列类似的行为并使用下标运算符,您应该使用std::vector 而不是std::list。然后你可以像使用数组一样使用它来访问和替换元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2020-06-16
      • 2013-09-21
      • 2015-12-26
      • 2013-11-08
      • 1970-01-01
      • 2011-09-11
      相关资源
      最近更新 更多