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