none
Атомарные переменные RRS feed

  • Вопрос

  • Здравствуйте. Подскажите, пожалуйста, почему при вызове метода .resize() для вектора атомарных указателей возникает ошибка компиляции? Ошибка сообщает о том, что конструктор копирования удален. Но запись вида:

    vector<atomic<void*>> ClientsList;

    ...

    ClientsList.resize(ClientsCount);

    Должна вызывать для вставляемых элементов конструктор по умолчанию. Причем тут конструктор копирования const atomic<void*> &?

     Задача - неблокирующая обработка списка клиентов сервера (многопоточная, атомарная). Если вектор объявляется до функции main:

    vector<atomic<void*>> ClientsList(ClientsList);
    То никаких ругательств на вызов конструктора нет. Однако, при попытке изменить размер вектора, емкость вектора или вставить очередной atomic<void*> - все та же ошибка компиляции вида: конструктор копирования const atomic<void*> & удален.






    • Изменено MGNeo 18 мая 2016 г. 18:30 Опечатка

Ответы

  • Должна вызывать для вставляемых элементов конструктор по умолчанию. Причем тут конструктор копирования const atomic<void*> &?

    Вам же компилятор четко сказал, что в данном случае используется конструктор копирования, который запрещен для atomic. Придумайте другое решение и не плодите одинаковые темы.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!