Переменная "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
в ваш исходный файл. Из-за различий в платформе иногда случается, что на платформе вы получаете включение бесплатно, при портировании на другую платформу вы должны добавить явное включение.