gpt4 book ai didi

c++ - Qt Creator 调试器中 vector 成员的值是多少?

转载 作者:行者123 更新时间:2023-11-30 03:50:09 26 4
gpt4 key购买 nike

我有两个类(class)。一种是容器。

头等舱:

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

第二类有一个指向第一类的指针 vector :

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 的对象树,并查看每个 vector 节点成员的地址。

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 vector 中的指针相同。

最佳答案

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

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

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

关于c++ - Qt Creator 调试器中 vector 成员的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com