Я просто думал, что новые инициализаторы элементов C++ 11 в классе могут использоваться для инициализации Singletons во время компиляции, что может быть ускорением для некоторых классов Manager в моем приложения:Инициализация синглтона во время компиляции
class CSingleton
{
public:
CSingleton(void) {}
~CSingleton(void) {}
static const CSingleton* GetInstance(void)
{
return Instance;
}
bool Foo1(int x);
bool Foo2(int y);
private:
static constexpr CSingleton *Instance = new CSingleton();
}
проблема заключается в это приводит к следующим ошибкам:
Line of Instance declaration: error: invalid use of incomplete type 'class test::CSingleton'
First Line of class declaration: error: forward declaration of 'class test::CSingleton'
есть ли способ инициализации синглтонов во время компиляции с тем или другим подходом?
[Я использую GCC4.7 на MacOSX10.7 (и Ubuntu) с -std = C++ 0x флаг установлен]
Этот класс не очень похож на одноэлементный ... – jrok
Помимо проблемы с незавершенным типом, как вы ожидаете, что вызов 'operator new' будет выполнен во время компиляции? – Job
@Job полностью пропустил эту точку. спасибо – niktehpui