Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Статическая переменная класса unresolved

48K
13 октября 2010 года
ZeroDivision
18 / / 14.08.2009
Есть простой код:
Код:
class A
{
public:
    A() { i_.method(); }
private:
    class Internal
    {
    public:
        Internal() { }
        void method() { }
    };
   
    static Internal i_;
};

int main()
{
    A a;
    return 0;
}

Выглядит вроде компилируемо.
Компилятор ругается на unresolved external symbol A::i_. Ругается и VS и g++. В чем может быть причина? Неужели нужно чтобы класс Internal был определен в другом месте?
Идея этого кода простая - менеджер ресурсов. Во внутреннем класса инициализируется некий ресурс (скажем dll) и этот ресурс остается загруженным на все время работы программы. А при завершении будет автоматически подчищен компилятором и в деструкторе освободит ресурс. Если есть другие способы решения поставленной задачи - буду рад услышать.
48K
13 октября 2010 года
ZeroDivision
18 / / 14.08.2009
Ответ найден: статические поля нужно инициализировать явно.
До int main() нужно написать:
A::Internal A::i_;
Прошу прощения за тупизм, тему можно закрывать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог