這裏是我的項目的代碼片段:初始化模板類內的靜態std :: map成員?
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: '事件:: 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:\用戶\ ADMIN \文檔\ Visual Studio的 2010 \項目\ cppsystem \ cppsystem \ main.cpp中67
我希望這PICE的代碼就足夠了。 我無法使用該映射的「初始化函數」初始化靜態映射成員。 非常感謝!
[在哪裏,爲什麼我必須把 「模板」 和 「類型名稱」 關鍵字?](http://stackoverflow.com/questions/610245/where-and-why -do-i-have-to-put-the-template-and-typename-keywords) – Xeo 2012-01-03 09:36:13
嘿,謝謝你那個有用的鏈接......我正在閱讀那篇帖子,來自strech吧!歡呼我的朋友。 – codekiddy 2012-01-03 09:50:00