如果您只想定义它,而不是添加任何成员,那么您只需说:
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;
}