问题标签 [qscopedpointer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cgal - cgal 演示多面体,调试器在 qscopedpointer.h 中崩溃
我在这个演示中没有做任何改变,它首先运行良好。但是午饭后,我再次运行它,调试器崩溃了,我得到了一个错误(下),调试器到达了 qscopedpointer.h 中的这一行:
内联 T *data() 常量
{返回d; }
错误:
Polyhedron_3.exe 中 0x00007FFDE604516A (Qt5Guid.dll) 处的未处理异常:0xC000041D:访问冲突读取位置 0x00000004:在用户回调期间遇到未处理异常。
堆栈跟踪是这样的:
Qt5Guid.dll!QScopedPointer >::data() 第 135 行 C++ Qt5Guid.dll!qGetPtrHelper >>(const QScopedPointer > & p) 第 983 行 C++
Qt5Guid.dll!QScreen::d_func() 第 59 行 C++
Qt5Guid.dll!QScreen::geometry() 第 302 行 C++
qwindowsd.dll!QWindowsWindow::isFullScreen_sys() 第 1630 行 C++
qwindowsd.dll!QWindowsWindow::handleResized(int wParam) 第 1394 行 C++
qwindowsd.dll!QWindowsContext::windowsProc(HWND__ * hwnd, unsigned int message,
QtWindows::WindowsEventType et, unsigned __int64 wParam, __int64 lParam, __int64 * result) 第 1011 行 C++
qwindowsd.dll!qWindowsWndProc(HWND__ * hwnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) 第 1271 行 C++
qwindowsd.dll!qWindowsWndProc(HWND__ * hwnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) 第 1280 行 C++
qwindowsd.dll!WindowCreationData::initialize(const QWindow * w, HWND__ * hwnd, bool frameChange, double opacityLevel) 第 707 行 C++
qwindowsd.dll!QWindowsWindow::setWindowFlags_sys(QFlags wt, unsigned int flags) 第 1571 行 C++
qwindowsd.dll!QWindowsWindow::setParent_sys(const QPlatformWindow * parent) 第 1294 行 C++
qwindowsd.dll!QWindowsWindow::setParent(const QPlatformWindow * newParent) 第 1260 行 C++
Qt5Guid.dll!QWindow::setParent(QWindow * parent) 第 614 行 C++
Qt5Widgetsd.dll!q_createNativeChildrenAndSetParent(const QWidget * parentWidget) 第 1377 行 C++
Qt5Widgetsd.dll!q_createNativeChildrenAndSetParent(const QWidget * parentWidget) 第 1382 行 C++
Qt5Widgetsd.dll!QWidgetPrivate::create_sys(unsigned __int64 window, bool initializeWindow, bool destroyOldWindow) Line 1481 C++
Qt5Widgetsd.dll!QWidget::create(unsigned __int64 window, bool initializeWindow, bool destroyOldWindow) Line 1321 C++
Qt5Widgetsd.dll!QWidget::setVisible(bool visible) 第 8060 行 C++
Qt5Widgetsd.dll!QWidget::show() 第 7671 行 C++
Polyhedron_3.exe!main(int argc, char * * argv) 第 51 行 C++
Polyhedron_3.exe!__tmainCRTStartup() 第 626 行 C
Polyhedron_3.exe!mainCRTStartup() 第 466 行 C
================================
我不知道问题是什么。如果有人能给我一些建议来解决这个问题,我将不胜感激。谢谢。
c++ - 了解 QScopedPointer 通过引用传递
我一直在尝试了解如何将其作为 const 引用传递。
我有以下课程:
在我的 MainWindow 类中,我将其定义为:
Storage类是如何定义的:
在 StorageData SetDBContext() 中,我尝试使用以下内容分配它:
然后在 MainWindow 构造函数中初始化它:
在 StorageData 函数 SetDBContext() 中使用以下内容:
我收到一个错误:
'QScopedPointer>::operator =' : 无法访问在类 'QScopedPointer>' 中声明的私有成员
更新
使用 QSharedPointer 和 QWeakPointer 的技巧。这是使用这两个指针的有效方法吗?我也在 A 类和 B 类上正确使用 clear() 吗?
在构造函数中:
在析构函数中:
qt - QScopedPointers 的 QList
我正在尝试将 QScopedPointers 存储在 QList 中。
我找到了这个评论
也可以使用 QList >。– Kuba Ober 2014 年 1 月 14 日 18:17
(对此答案的第一条评论:https ://stackoverflow.com/a/21120575/3095014 )
这篇文章https://forum.qt.io/topic/59338/solved-qlist-of-qscopedpointers这意味着这应该有效。但是,如果我尝试编译第二个链接的代码,则会出现以下错误:
为什么这对我不起作用?
c++ - 是否有可能拥有某个抽象类的 QScopedPointer 的 QList?
我想有一个QList
或QVector
在一个类中,它有一个恒定数量的元素类型QScopedPointer< SomeAbstractClass >
。我可以很容易地使用这样的东西:
但是在 中QScopedPointer
,复制构造函数被禁用,我们无法实例化抽象类。
当然,我可以轻松使用QSharedPointer
,但由于某些原因我不想这样做,那我该怎么办?
编辑:这是我的示例代码,我收到了这个错误:
qt - 使用抽象类的 QScopedArrayPointer?
最近 Qt 做了一些改变,我们不能在语义上移动QScopedPointer
,所以我们不能有一个 QList< QScopedPointer< SomeClass> >
,基于我的另一个问题。
我的第二个解决方案是使用QScopedArrayPointer
. 但是我们不能将这些容器用于抽象类,这是我最初的问题。有没有其他方法可以使用一些QScopedPointer
抽象类列表?
qt - QScopedPointer 与父级
我需要一些关于下一个情况的解释。假设我们有下一个代码:
我不明白将带有父对象的对象传递给 QScopedPointer 是否安全。当对象被父对象和智能指针两次删除并且会导致崩溃时,可能会出现任何情况吗?
c++ - QScopedPointer实现中sizeof的使用
为了了解 Qt 如何防止不完整类型,我浏览了 . 的头文件qscopedpointer.h
。相关部分如下:
我知道sizeof
在不完整类型上使用时编译会失败。但是数组和第二个sizeof
做什么?仅 sizeof 还不够吗?
arrays - QVector + QScopedPointer - 传递给 C 运行时函数的无效参数
我有一个方法,它生成一个巨大的QVector<uchar>
(大小:354792000),并且内存是动态分配/释放的,为了方便我使用 QScopedPointer:
创建小尺寸数组 - 没问题,您也可以创建一个大尺寸数组,但是当我再次调用该方法时,我收到错误“传递给 C 运行时函数的参数无效”。它通过调试器,尝试为新数组分配空间时发生错误:
数据::分配(asize); :
会是什么呢?内存泄漏(不可能再次分配如此大的连续内存,因为之前的调用没有释放内存?)?...我只是不明白问题是什么,在离开方法范围之前,我什至手动清理数组并释放内存...如果有任何建议,我将不胜感激