问题标签 [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.

0 投票
0 回答
207 浏览

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

================================

我不知道问题是什么。如果有人能给我一些建议来解决这个问题,我将不胜感激。谢谢。

0 投票
1 回答
1850 浏览

c++ - 了解 QScopedPointer 通过引用传递

我一直在尝试了解如何将其作为 const 引用传递。

我有以下课程:

在我的 MainWindow 类中,我将其定义为:

Storage类是如何定义的:

在 StorageData SetDBContext() 中,我尝试使用以下内容分配它:

然后在 MainWindow 构造函数中初始化它:

在 StorageData 函数 SetDBContext() 中使用以下内容:

我收到一个错误:

'QScopedPointer>::operator =' : 无法访问在类 'QScopedPointer>' 中声明的私有成员

更新

使用 QSharedPointer 和 QWeakPointer 的技巧。这是使用这两个指针的有效方法吗?我也在 A 类和 B 类上正确使用 clear() 吗?

在构造函数中:

在析构函数中:

0 投票
1 回答
3306 浏览

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这意味着这应该有效。但是,如果我尝试编译第二个链接的代码,则会出现以下错误:

为什么这对我不起作用?

0 投票
0 回答
542 浏览

c++ - 是否有可能拥有某个抽象类的 QScopedPointer 的 QList?

我想有一个QListQVector在一个类中,它有一个恒定数量的元素类型QScopedPointer< SomeAbstractClass >。我可以很容易地使用这样的东西:

但是在 中QScopedPointer,复制构造函数被禁用,我们无法实例化抽象类。

当然,我可以轻松使用QSharedPointer,但由于某些原因我不想这样做,那我该怎么办?

编辑:这是我的示例代码,我收到了这个错误:

0 投票
0 回答
136 浏览

qt - 使用抽象类的 QScopedArrayPointer?

最近 Qt 做了一些改变,我们不能在语义上移动QScopedPointer,所以我们不能有一个 QList< QScopedPointer< SomeClass> > ,基于我的另一个问题

我的第二个解决方案是使用QScopedArrayPointer. 但是我们不能将这些容器用于抽象类,这是我最初的问题。有没有其他方法可以使用一些QScopedPointer 抽象类列表?

0 投票
1 回答
362 浏览

qt - QScopedPointer 与父级

我需要一些关于下一个情况的解释。假设我们有下一个代码:

我不明白将带有父对象的对象传递给 QScopedPointer 是否安全。当对象被父对象和智能指针两次删除并且会导致崩溃时,可能会出现任何情况吗?

0 投票
1 回答
152 浏览

c++ - QScopedPointer实现中sizeof的使用

为了了解 Qt 如何防止不完整类型,我浏览了 . 的头文件qscopedpointer.h。相关部分如下:

我知道sizeof在不完整类型上使用时编译会失败。但是数组和第二个sizeof做什么?仅 sizeof 还不够吗?

0 投票
1 回答
163 浏览

arrays - QVector + QScopedPointer - 传递给 C 运行时函数的无效参数

我有一个方法,它生成一个巨大的QVector<uchar>(大小:354792000),并且内存是动态分配/释放的,为了方便我使用 QScopedPointer:

创建小尺寸数组 - 没问题,您也可以创建一个大尺寸数组,但是当我再次调用该方法时,我收到错误“传递给 C 运行时函数的参数无效”。它通过调试器,尝试为新数组分配空间时发生错误:

数据::分配(asize); :

会是什么呢?内存泄漏(不可能再次分配如此大的连续内存,因为之前的调用没有释放内存?)?...我只是不明白问题是什么,在离开方法范围之前,我什至手动清理数组并释放内存...如果有任何建议,我将不胜感激