C ++ Poco - Как создать вектор NotificationQueue's? - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу создать Центр уведомлений , где я обрабатываю все от notifications до threads.

Я не могу сказать, при загрузке программного обеспечения, сколько 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&)’

, который яПонимаю.Я не могу скопировать или присвоить NotificationQueue.

Вопрос:

Можно ли как-нибудь обработать вектор NotificationQueue, не создавая их статически?

1 Ответ

0 голосов
/ 11 сентября 2018

Принимая @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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...