C++ Poco - 如何创建 NotificationQueue 的向量?

Posted

技术标签:

【中文标题】C++ Poco - 如何创建 NotificationQueue 的向量?【英文标题】:C++ Poco - How to create a vector of NotificationQueue's? 【发布时间】:2018-09-11 16:27:56 【问题描述】:

我想创建一个通知中心,我在其中处理所有notificationsthreads

我无法在软件启动时告诉我需要多少 notification 队列。在run-time 期间可能会有所不同。

所以我创建了这个(代码简化):

#include <vector>
#include "Poco/Notification.h"
#include "Poco/NotificationQueue.h"

using Poco::Notification;
using Poco::NotificationQueue;

int main()

    std::vector<NotificationQueue> notificationCenter;
    NotificationQueue q1;
    NotificationQueue q2;
    notificationCenter.push_back(q1); //ERROR: error: use of deleted function ‘Poco::NotificationQueue::NotificationQueue(const Poco::NotificationQueue&)’
    notificationCenter.push_back(q2);

    return 0;

我收到了error: use of deleted function ‘Poco::NotificationQueue::NotificationQueue(const Poco::NotificationQueue&amp;)’

我明白了。我无法复制或分配NotificationQueue

问题:

有什么方法可以处理NotificationQueue 的向量而不静态创建它们?

【问题讨论】:

std::vector 需要对 copyable types 进行操作,而 Poco::NotificationQueue 显然不需要。 NotificationQueue 没有复制构造函数,您的上下文中的 push_back 将创建一个副本。创建指向它们的指针向量(智能)。 【参考方案1】:

接受@arynaq 评论,指针向量将完成这项工作:

#include <memory>
#include <vector>
#include "Poco/Notification.h"
#include "Poco/NotificationQueue.h"

using Poco::Notification;
using Poco::NotificationQueue;

int main()

    std::vector<std::shared_ptr<NotificationQueue>> notificationCenter;
    std::shared_ptr<NotificationQueue> q1 = std::make_shared<NotificationQueue>();
    std::shared_ptr<NotificationQueue> q2 = std::make_shared<NotificationQueue>();

    notificationCenter.push_back(q1);
    notificationCenter.push_back(q2);

    return 0;

【讨论】:

以上是关于C++ Poco - 如何创建 NotificationQueue 的向量?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Poco :: ZIP压缩/解压缩zip文件

poco新增对cocos c++项目的支持~

如何编译POCO

如何使用 link.exe 进行静态链接

如何从DbContext中清除未插入的POCO? - 实体框架代码优先

【Poco笔记】线程Thread