问题标签 [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.
qt - 如何创建 QSharedPointer> 带有初始化列表?
什么有效
在 Qt 5.12.4 中,我尝试动态创建QSharedPointer<QMap<int,bool>>
. 我知道我能做到
以及动态地
我知道我可以QSharedPointer
像这样创建我的:
什么不
我想一口气做到这一点,但我无法完成。我试过最明显的
但无济于事。编译器警告我我的类型不匹配,但我没有看到我必须更改代码才能编译的地方。有任何想法吗?提前致谢。
编译器错误
c++ - 在发布模式下不调用 Qt 插槽,我责怪 QSharedPointer
我对信号槽机制有疑问,可能是QSharedPointer
因为智能指针对我来说是新的。
上下文的一点解释:
TCPAssociation
是LANAssociation
. TCPClient
是子类LANClient
。LANClient
有受保护的QSharedPointer<LANAssociation> connection
变量,TCPClient
有私有的QSharedPointer<TCPAssociation> conn
;两者都指向在覆盖的纯虚函数中创建的同一个对象,如下所示:
该代码在调试模式下的 Windows 10 上运行良好。在 Linux 的发布模式下,LANClient::assoc_started
从不调用。
现在我在 Windows 上运行我的服务器应用程序(上面的函数来自客户端应用程序),我可以看到另一个插槽没有在发布中被调用,但在调试中工作得很好:
*worker
指向 的子类ThreadWorker
。ThreadWorker::doWork()
是虚函数。它是在调试中调用的,而不是在发布时调用的。我通过制作doWork()
纯虚拟来修复它 - 现在它在调试和发布中都被调用。
我也有问题,QTcpSocket
对象QUdpSocket
不发射connected()
or readyRead()
。现在我明白这可能是因为我QSharedPointer<QAbstractSocket>
用来管理它们,但是:
为什么调试和发布之间的区别?如何正确地做到这一点?
我应该停止使用继承还是共享指针?
- 为什么
TCPAssociation::started()
不被发射?LANClient::assoc_started
也不是虚函数。
c++ - 使用 QVector 并在良好实践中实现 QVector 的子集
大家好,早上好,我有两个关于 QVector 及其用法的问题。我有一个自己的自定义类。有必要使用QVector<QSharedPointer<Class*>>
或者直接将实例添加到QVector
like就足够了QVector<Class*>>
。我读到QVector
已经在内部使用了一个共享指针,与 std 向量相反。直接附加实例指针是不好的做法吗?
接下来,我想要一个QVector
带有选定元素的子集。使用 QVector> 来做这件事的好习惯是什么?
c++ - 使用 QSharedPointer 作为数据模型
我有一个应用程序,其中包含多个编写为独立类的“输入小部件”,它们都存储了显示数据的相应类的共享指针。在这些小部件中的每一个中,用户都可以查看和操作一些不同的数据。所有这些数据都用作输入,也用作计算的输出。其中两个小部件共享相同的数据/类,但操作该类的不同成员。
如何实现在一个小部件中操作数据会自动更新另一个小部件?
所以问题是:我可以在两个类之间共享一个 QSharedPointer,然后将它连接到一个“this”槽,这样当我在其中一个类中操作指针的值时,另一个可以对这些数据做一些事情(如更新它是gui)?
我的意图是,因为我必须将实际数据存储在另一个 QSharedPointer 中,所以在那个告诉另一个小部件的共享指针上进行连接。
我想到了这样的事情:
更新
而类 foo 实际上是一个存储实际数据的包装器class baz
。喜欢:
shared-ptr - SharedPointer - 在构造函数中创建对象并创建子对象并共享父共享 ptr
我很确定这是不可能的,我需要第二个初始化函数调用......但也许是这样?
。主要的
H。
.cpp
当检查子对象时,这将返回一个无效的父对象。我想这是因为我们在共享它之前正在制作 sharedFromThis() ... any1 可以提出另一种方法而不使用新函数来将父对象设置为子对象吗?