初始化静态多映射类成员
Initialize static multimap class member
我需要一个来自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。
如果你只想定义它,而不是向它添加任何成员,那么你只需要说:
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;
}
相关文章:
- 将函数类成员映射到类本身内部
- 添加静态constexpr成员是否会更改结构/类的内存映射
- 整数键映射到头文件中的成员函数指针
- C++预处理会生成变量成员、资源库和映射
- 迭代嵌套映射与范围为循环:没有名为"first"的成员
- C++:在子类中扩展静态 STL 容器/映射成员?
- 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- C++-将对象(如字符串)映射到表中成员函数的正确方法
- 重构MFC消息映射以包括完全限定的成员函数指针
- gdb映射显示不正确的成员变量
- c++ 嵌套结构映射找不到成员
- 尝试通过指针映射访问类成员
- 映射类的数据成员
- std::映射键作为模板化结构与枚举成员
- 为什么擦除C++映射类成员中的值?
- 如何创建<id,成员函数>的映射?
- 向量映射作为实例成员的C 地图
- 如何使用成员函数映射参数包?(非恢复性,折叠前表达式)
- 删除类成员映射时,映射析构函数stl_map.h崩溃
- 在类定义中初始化静态常量成员映射<>