2014-09-19 3 views
4

Это заявление я имею в файле .h:использование удаленной функции - станд :: атомное

static std::atomic<int> OrdersExecutorIdCounter; 

Это initilization из .cpp файла:

std::atomic<int> ActionBasedOrdersExecutor::OrdersExecutorIdCounter = 0; 

Это компилируется нормально в VC++, но в GCC 4.8, я получаю эту ошибку:

error: use of deleted function ‘std::atomic<int>::atomic(const std::atomic<int>&)’ 

Как я могу решить эту проблему?

+0

Показать точную команду компиляции. –

+0

Подумайте, что этот код делает в теории. Подсказка: копирование-инициализация имеет значение. – chris

+0

'g ++ -std = C++ 0x -I"/home/oleg/eclipseWorkspace/CommonsLibrary "-O3 -Wall -c -fmessage-length = 0 -MMD -MP -MF" ActionBasedOrdersExecutor.d "-MT" ActionBasedOrdersExecutor. d "-o" ActionBasedOrdersExecutor.o "" ../ ActionBasedOrdersExecutor.cpp ", я удалил некоторые' -I' как не важные – javapowered

ответ

7

Вы можете непосредственно инициализировать атомарную переменную, которая не требует удален конструктор копирования, например:

std::atomic<int> ActionBasedOrdersExecutor::OrdersExecutorIdCounter{0}; 
1

Вам не нужно (или хотят), чтобы инициализировать атомное целое число 0 (ИНТ значение будет 0 инициализировано для глобального).

Смежные вопросы