问题标签 [qsharedpointer]

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 投票
3 回答
404 浏览

qt - 如何创建 QSharedPointer> 带有初始化列表?

什么有效

在 Qt 5.12.4 中,我尝试动态创建QSharedPointer<QMap<int,bool>>. 我知道我能做到

以及动态地

我知道我可以QSharedPointer像这样创建我的:

什么不

我想一口气做到这一点,但我无法完成。我试过最明显的

但无济于事。编译器警告我我的类型不匹配,但我没有看到我必须更改代码才能编译的地方。有任何想法吗?提前致谢。

编译器错误

0 投票
1 回答
67 浏览

c++ - 在发布模式下不调用 Qt 插槽,我责怪 QSharedPointer

我对信号槽机制有疑问,可能是QSharedPointer因为智能指针对我来说是新的。

上下文的一点解释: TCPAssociationLANAssociation. TCPClient是子类LANClientLANClient有受保护的QSharedPointer<LANAssociation> connection变量,TCPClient有私有的QSharedPointer<TCPAssociation> conn;两者都指向在覆盖的纯虚函数中创建的同一个对象,如下所示:

该代码在调试模式下的 Windows 10 上运行良好。在 Linux 的发布模式下,LANClient::assoc_started从不调用。

现在我在 Windows 上运行我的服务器应用程序(上面的函数来自客户端应用程序),我可以看到另一个插槽没有在发布中被调用,但在调试中工作得很好:

*worker指向 的子类ThreadWorkerThreadWorker::doWork()是虚函数。它是在调试中调用的,而不是在发布时调用的。我通过制作doWork()纯虚拟来修复它 - 现在它在调试和发布中都被调用。

我也有问题,QTcpSocket对象QUdpSocket不发射connected()or readyRead()。现在我明白这可能是因为我QSharedPointer<QAbstractSocket>用来管理它们,但是:

  1. 为什么调试和发布之间的区别?如何正确地做到这一点?

  2. 我应该停止使用继承还是共享指针?

  3. 为什么TCPAssociation::started()不被发射?LANClient::assoc_started也不是虚函数。
0 投票
1 回答
66 浏览

c++ - 使用 QVector 并在良好实践中实现 QVector 的子集

大家好,早上好,我有两个关于 QVector 及其用法的问题。我有一个自己的自定义类。有必要使用QVector<QSharedPointer<Class*>>或者直接将实例添加到QVectorlike就足够了QVector<Class*>>。我读到QVector已经在内部使用了一个共享指针,与 std 向量相反。直接附加实例指针是不好的做法吗?

接下来,我想要一个QVector带有选定元素的子集。使用 QVector> 来做这件事的好习惯是什么?

0 投票
1 回答
93 浏览

c++ - 使用 QSharedPointer 作为数据模型

我有一个应用程序,其中包含多个编写为独立类的“输入小部件”,它们都存储了显示数据的相应类的共享指针。在这些小部件中的每一个中,用户都可以查看和操作一些不同的数据。所有这些数据都用作输入,也用作计算的输出。其中两个小部件共享相同的数据/类,但操作该类的不同成员。

如何实现在一个小部件中操作数据会自动更新另一个小部件?

所以问题是:我可以在两个类之间共享一个 QSharedPointer,然后将它连接到一个“this”槽,这样当我在其中一个类中操作指针的值时,另一个可以对这些数据做一些事情(如更新它是gui)?

我的意图是,因为我必须将实际数据存储在另一个 QSharedPointer 中,所以在那个告诉另一个小部件的共享指针上进行连接。

我想到了这样的事情:

更新

而类 foo 实际上是一个存储实际数据的包装器class baz。喜欢:

0 投票
0 回答
11 浏览

shared-ptr - SharedPointer - 在构造函数中创建对象并创建子对象并共享父共享 ptr

我很确定这是不可能的,我需要第二个初始化函数调用......但也许是这样?

。主要的

H。

.cpp

当检查子对象时,这将返回一个无效的父对象。我想这是因为我们在共享它之前正在制作 sharedFromThis() ... any1 可以提出另一种方法而不使用新函数来将父对象设置为子对象吗?