メンバーを追加するのではなく、定義するだけの場合は、次のように言うだけです。
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;
}