如果你想要做的就是定義它,沒有任何成員添加到它,那麼你只是說:
std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> > Buffer::timeStampPackets;
類定義之外,在.cpp
文件的類。而已!
但是如果你使用一個typedef的地圖類型的生活會更簡單:
namespace sctg
{
class Buffer : public BufferInterface
{
public:
// ...
private:
typedef std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> > TimeStampMap;
static TimeStampMap timeStampPackets; // declare
};
}
在.cpp
文件:
namespace sctg
{
Buffer::TimeStampMap Buffer::timeStampPackets; // define
}
如果你想將成員插入到地圖...
如果你使用的是C++ 11,你可以像這樣初始化成員:
TimeStampMap Buffer::timeStampPackets{ { {}, { sc_core::sc_time_stamp(), sc_core::sc_time_stamp() } } };
如果您不能使用C++ 11的話,最好的選擇是:
TimeStampMap Buffer::timeStampPackets = getTimeStampPackets();
如果該函數返回一個包含你想要的數據的地圖:
TimeStampMap getTimeStampPackets()
{
TimeStampMap result;
result.insert(TimeStampMap::value_type("", std::pair<sc_core::sc_time, sc_core::sc_time>()));
return result;
}
這是什麼,甚至應該去做?您試圖在未初始化的對象上調用成員函數,然後從作爲迭代器而不是映射的返回值初始化該對象。而且你不使用'static'關鍵字來定義一個靜態成員。而且您不會插入具有兩個值的多圖。 –