我需要一个类型为multimap的静态成员
我检查了在类声明
之后必须初始化(或定义)静态成员问题在于我没有找到正确的sintax来初始化(定义)我声明的多重映射
这是我的多图宣告:
namespace sctg
{
class Buffer : public BufferInterface
{
public:
...
private:
static std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> > timeStampPackets;
};
}
我正在使用C ++ 98。
答案 0 :(得分:1)
如果您要做的只是定义它,而不是添加任何成员,那么您只需说:
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;
}