У меня есть класс, который поддерживает экземпляр типа class IOSharedDataQueue : public IODataQueue
, который является объектом IOKit.
Класс отделен и вызывается из различных методов основного класса, который является классом на основе IOKit (производным от IOService
).
Пытаясь преобразовать этот класс в синглтон, я добавил функцию getInstance
со следующей реализацией:
myclass& myclass::getInstance()
{
static myclass instance;
return instance;
}
Однако кажется, что способ инициализации синглтона в С ++ 11 должен работать в компиляторе IOKit, а Xcode выдает следующую ошибку:
This initialization requires a guard variable, which the kernel does not support
Дело в том, что он работает для классов, не содержащих объектов на основе IOKIt.
Возможно, кто-нибудь сталкивался с этой проблемой, я не видел документации об этом ограничении.
РЕДАКТИРОВАТЬ :
Я обнаружил, что если мой класс каким-либо образом не содержит никаких объектов IOResources, он может быть спроектирован как синглтон с переменной защиты.
Тем не менее, я по-прежнему хочу иметь возможность создавать несколько простых и содержащихся оболочек для использования в моем проекте IOKit без передачи указателей.