如何实例化并附加到指向我的对象的指针的 QVector
Posted
技术标签:
【中文标题】如何实例化并附加到指向我的对象的指针的 QVector【英文标题】:how to instantiate and append to a QVector of pointers to my objects 【发布时间】:2015-12-07 05:08:44 【问题描述】:我需要实例化并附加到指向我的对象的指针的 QVector
我的标题说
QVector<Stuff*> myResults;
通过注释掉内容,我将其范围缩小到我对 QVector 的使用
1) 当我尝试
myResults.append(stuff);
2) 当我尝试时
myResults.push_back(stuff);
我明白了
First-chance exception at 0x00007FF652523520 in LibTestd.exe: 0xC0000005: Access violation reading location 0x0000000000000030.
我复制并粘贴了不同的方法来实例化我的 qvector,但无济于事。包括来自 doc.qt.io 的示例,其中 0 和 50
QVector<Stuff> vector(0);
我尝试让 QVector 中的类类型不是指针,以及取消引用的东西。
我真的不知道出了什么问题,但我相当肯定这与我滥用指针有关。有人可以给任何...指针吗? :P
顺便说一句,如果它是相关的,东西翻译单元(我的意思是,同名的 Stuff.h 和 Stuff.cpp 文件(是翻译单元的名称吗?))其中有两个类,Crap 类和 Stuff 类,Stuff 没有废话就不可能存在。我的构造函数中有这样的初始化列表。
顺便说一句,我实例化了这样的东西Stuff * stuff = new Stuff()
【问题讨论】:
myResults
是如何准确定义的? QVector<Stuff*> myResults;
?
是的,我尝试过这种方式以及 QVector没有其余的代码很难提供帮助,但是:
QVector
不尊重其给定的数据,因此在执行时检查myResults
变量的有效性。
是的,我知道它不是一个指针,而是一个类级别的变量,不过,请检查一下,特别是如果您在任何可能运行对象析构函数的线程上使用 processEvents()
(或等效项)。
如果您发现 myResults
变量无效(在调试版本中指向 0xfeeefeee + 更多,和/或在“无法读取”内存上,请检查对象的析构函数是否在访问冲突之前运行。
Qt 新手甚至新手使用processEvents()
是很常见的,并且不会重新考虑导致其对象销毁的槽可能会在 processEvents() 调用期间运行。
【讨论】:
【参考方案2】:超级巨大的金发时刻>。> 创建尝试使用Qvector的类的类......我aummm,忘记实例化它...... *羞愧于这让我困惑了多久* 但是耶!令人困惑的新问题!还有其他问题。
【讨论】:
以上是关于如何实例化并附加到指向我的对象的指针的 QVector的主要内容,如果未能解决你的问题,请参考以下文章