Переменная "ACE_Atomic_Op<ACE_Thread_Mutex, без знака int> AcsHcs:: Cache:: cnt" имеет инициализатор, но неполный тип

Я портирую свой код Windows на Linux. Когда я использую ACE_Atomic_Op API, компилятор выдает некоторые ошибки, как показано ниже

variable "ACE_Atomic_Op<ACE_Thread_Mutex, unsigned int> AcsHcs::Cache::cnt" 
has initializer but incomplete type"

мой код выглядит следующим образом:

в файле Cache.h у меня есть

static ACE_Atomic_Op<ACE_Thread_Mutex, unsigned int> cnt;

и в cache.cpp я объявляю cnt как

ACE_Atomic_Op<ACE_Thread_Mutex, unsigned int> Cache::cnt = 0;

это отлично работает в Windows, но это выдает ошибку в Linux

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

заранее спасибо

1 ответ

Вам не хватает включить, пожалуйста, добавьте ace/Atomic_Op.h в ваш исходный файл. Из-за различий в платформе иногда случается, что на платформе вы получаете включение бесплатно, при портировании на другую платформу вы должны добавить явное включение.

Другие вопросы по тегам