class A
{
public:
A() { i_.method(); }
private:
class Internal
{
public:
Internal() { }
void method() { }
};
static Internal i_;
};
int main()
{
A a;
return 0;
}
Статическая переменная класса unresolved
Код:
Выглядит вроде компилируемо.
Компилятор ругается на unresolved external symbol A::i_. Ругается и VS и g++. В чем может быть причина? Неужели нужно чтобы класс Internal был определен в другом месте?
Идея этого кода простая - менеджер ресурсов. Во внутреннем класса инициализируется некий ресурс (скажем dll) и этот ресурс остается загруженным на все время работы программы. А при завершении будет автоматически подчищен компилятором и в деструкторе освободит ресурс. Если есть другие способы решения поставленной задачи - буду рад услышать.
До int main() нужно написать:
A::Internal A::i_;
Прошу прощения за тупизм, тему можно закрывать.