LINUX.ORG.RU

Статические члены классов в С++


0

0

Доброе время суток.

Собираю разделяемую библиотеку с классом

class TComponent {
public:
   // ...
   TEvent GetEvent() { return fEvent; }
private:
   static TEvent fEvent;
};

собирается, но потом выдает ошибку линковки:
undefined reference to `TComponent::fEvent'

убираю static перед TEvent fEvent - и все линкуется нормально. В чем
дело? Спасибо!

(компилятор g++ 3.3.4, Debian)
    

Если переменная определена как static то сколько раз не создавай класс TComponent переменная будет только одна fEvent, при любом количестве классов TComponent. Отсюда наверное следует обьявить ее либо как public или убрать static. это вообще зависит от того что вы хотите сделать.

SatanClaus ★★★
()
Ответ на: комментарий от Sveta_F

Воббщем нужна явная инициализация статических переменных

anonymous
()
Ответ на: комментарий от SatanClaus

2 SatanClaus: А что private static уже стало вне закона?

eXOR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.