Цитата(Pathfinder @ Mar 2 2007, 16:56)

Пытаюсь объявить статическую переменную в классе, при компиляции по поводу этой переменной выдается что-то вроде:
"The following symbols referenced in processor 'p0' could not be resolved: ... ..."
Убираю модификатор static - все работает.
В чем может быть дело?
Это, очевидно, линкер ругается. Дело в том, что статические объекты не принадлежат объектам класса - т.е. никакой объект класса не содержит в себе статичесих объектов своего класса. Статический объект класса - это по сути обычный объект (переменная) со static storage duration (глобальным временем жизни), т.е. как обычная переменная, объявленная за пределами функций. Отличие статического объекта-члена класса от таких переменных только в том, что он объявлен в пространстве имен своего класса.Только и всего. Из этого следует, что программист должен для этого объекта сам руками выделить память - при создании объекта класса память выделяется только под нестатические члены. Т.е. нужно сделать нечто в этом роде:
Код
class TSlon
{
...
static int a;
...
};
...
int TSlon::a; // выделили память
Вот тогда под эту переменную будет выделена память, она будет помещена в соответствующую секцию данных и линкер все успешно найдет.
Кстати, можно вообще не создавать ни одного объекта класса, но статическая переменная все равно будет существовать и ей можно пользоваться. Т.е. у нее по сути своя отдельная жизнь.