代码之家  ›  专栏  ›  技术社区  ›  user3191398

QtCreator调试器中向量成员的值是多少?

  •  1
  • user3191398  · 技术社区  · 9 年前

    我有两节课。一个是容器。

    头等舱:

    class node
    {
    private:
        node *left, *right, *parent;
    public:
        node(node* parent,node* left,node* right);
        virtual ~node() {cout<<"~node()"<<endl;}
    };
    

    第二类具有指向第一类的指针向量:

    class tree
    {
    public:
        vector<node*> nodes;
    public:
        tree(int size);
        ~tree();
    
        void showPointers();
    
    };
    
    void tree::showPointers()
    {
        for (int i = 0; i < nodes.size(); i++)
        {
            cout<<"nodes["<<i<<"] = "<<nodes[i]<<endl;
        }
    }
    

    我正在创建一个大小为5的对象树,并查找每个向量节点成员的地址。

    int main()
    {
        tree d(5);
    
        d.showPointers();
    
        cout<<"end"<<endl;
    
    }
    

    在终端中,我看到(showPointers显示的内容):

    terminal output from <code>showPointers</code>

    调试器显示:

    debugger variable pane

    调试器变量窗格中的这些地址是什么?

    @0x9dea0b8
    @0x9dea0bc
    @0x9dea0c0
    @0x9dea0c4
    @0x9dea0c8
    

    我希望它们与我存储在 nodes 矢量。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Kuba hasn't forgotten Monica    9 年前

    您看到的地址是存储值的地址。这些地址与什么是值无关——你的值是指针只是巧合。调试器输出将与使用 std::vector<intptr_t> 而不是 std::vector<node*> .

    在您的案例中,表达式 &nodes[0] 具有价值 (node**)0x9dea0b8

    您需要扩展 [n] 树项以查看它们的值-存储的指针的值。