【发布时间】:2012-02-01 08:44:22
【问题描述】:
这是我项目中的代码 sn-p:
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++ 不支持 默认整数 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
我希望这段代码就足够了。 我无法使用该地图的“初始化函数”来初始化静态地图成员。 非常感谢!
【问题讨论】:
-
嘿,感谢您提供的有用链接...我现在正在阅读 strech 的那篇文章!为我的朋友干杯。
标签: c++ class templates static