static
переменные должны быть определены вне тела класса. объявление внутри тела класса - это просто объявление.
например. в глобальном масштабе:
int _filter_session::session_count;
Вы должны убедиться, что это определение встречается в программе только один раз, поэтому обычно вы помещаете его в исходный файл (.cc
или .cpp
), а не в заголовочный файл, который включен в несколько раз единицу перевода.
Для переносимости вам следует избегать имен классов, которые начинаются с _
. Также нет необходимости typedef
вашего имени класса. class Name { //...
вводит имя типа в C ++, вам не нужно было бы использовать class Name
для ссылки на тип.