gpt4 book ai didi

c++ - 堆/堆栈 - 进入 QGraphicsItemGroup 的变量范围

转载 作者:行者123 更新时间:2023-11-28 01:05:34 25 4
gpt4 key购买 nike

如果我有一个 QGraphicsItem,我想将其放入 QGraphicsItemGroup,在一个循环中......就像这样:

for(int i =0; i < 2; i++)
{
for(int j = 0; j < 2; j++)
{
QPixmap p(imwidth, imheight);
p.fill(Qt::gray);
QGraphicsPixmapItem *ipi = new QGraphicsPixmapItem(p);
group->addToGroup(ipi);
}
}

是否有必要将该项目放在堆上,或者我是否可以将其设为堆栈变量并期望它在组中仍然可见,这是在此 for 循环之外声明的?

最佳答案

addToGroup方法需要一个指针,所以你不能通过传递任何其他东西来逃避。它不会复制传入的对象,只会存储该指针。

如果你给它一个指向堆栈分配对象的指针,它迟早会在试图访问堆栈内存时崩溃,而堆栈内存从那时起(可能)已经被覆盖,即使它(奇迹般地)没有被覆盖,这些对象无论如何都会被销毁 - 所以它们在任何情况下都是无效的。

关于c++ - 堆/堆栈 - 进入 QGraphicsItemGroup 的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349616/

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