Вот фрагмент кода из моего проекта:
template<typename Second, typename First = const UINT64>
class Event : virtual public id_manager<>
{
friend class EventHandler;
typedef std::map<First, EventHandler> eventMap;
static eventMap mapper;
static eventMap StartMapping()
{
eventMap temp;
return temp;
}
public:
Event(){}
void operator+=(EventHandler _handler)
{
mapper[this->getID()] = _handler;
}
};
// INITIALIZATION FAILED HERE:
template<typename Second, typename First = const UINT64>
Event<Second, First>::eventMap Event<Second, First>::mapper(Event<Second, First>::StartMapping());
Вот ошибка вывода из Visual studio 2010:
Предупреждение 1, предупреждение C4346: 'Event :: eventMap': зависит
имя не относится к типу c: \ users \ admin \ documents \ visual studio
2010 \ projects \ cppsystem \ cppsystem \ main.cpp 67 Ошибка 2, ошибка C2143:
синтаксическая ошибка: отсутствует ';' до
'Event :: mapper' c: \ users \ admin \ documents \ visual studio
2010 \ projects \ cppsystem \ cppsystem \ main.cpp 67 Ошибка 3, ошибка C4430:
отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает
default-int c: \ users \ admin \ Documents \ visual studio
2010 \ projects \ cppsystem \ cppsystem \ main.cpp 67 Ошибка 4, ошибка C1903:
невозможно восстановить после предыдущей ошибки; остановка
компиляция c: \ users \ admin \ documents \ visual studio
2010 \ projects \ cppsystem \ cppsystem \ main.cpp 67
Надеюсь, этого кусочка кода достаточно.
Я не могу инициализировать член статической карты, используя "функцию инициализации" для этой карты.
Большое спасибо!