Загрузка...

воскресенье, 18 января 2009 г.

Что не так: задачка на знание шаблонов

Люблю искать решения на нетривиальные задачи, думаю и вам тоже понравится. Чтобы найти загвоздку в следующем примере, недостаточно поверхностных знаний C++. Программисты умудренные опытом наоборот, смогут с легкостью дать ответ. Итак, не буду томить... :)

Пусть есть класс со статической переменной:

class ClassWithStaticVar
{
public:
   static int StaticVar;
};
int ClassWithStaticVar::StaticVar;
Обратите внимание на определение статической переменной — все верно. Усложняем класс — добавляем собственное определение типа:
class ClassWithStaticVar
{
public:
   typedef int MyOwnType;
   static MyOwnType StaticVar;
};
ClassWithStaticVar::MyOwnType ClassWithStaticVar::StaticVar;
Опять обращаем внимание на определение статической переменной — все верно. А теперь вопрос: как определить все ту же переменную для шаблонного класса? Смотрите пример:
template <class T>
class ClassWithStaticVar
{
public:
   typedef int MyOwnType;
   static MyOwnType StaticVar;
};

template <class T>
ClassWithStaticVar<T>::MyOwnType ClassWithStaticVar<T>::StaticVar; //!! Ошибка времени компиляции

UPD. Задачка действительно не очень трудная, и первым правильно ответил Lazin :)

blog comments powered by Disqus


 
^

Powered by BloggerCreative Commons License