c++ - 从其他类的静态数据成员初始化映射
问题描述
我们有将静态数据成员公开为公共成员的类,例如
class A{
public:
static const string NAME;
//Other class specific methods
};
和类似的B类和其他一些类。
如果我必须创建一个类似的地图
static const map<string, string> versionMap = {{A().NAME, "Aa"},
{B().NAME, "Bb"}
};
在创建 versionMap 时创建的类的临时对象,是否保证始终具有定义的行为?
解决方案
似乎您可能正在使用类名实现某种反射机制。为什么不实际获取类名作为名称?
看一下:
我可以以 constexpr 方式获取 C++ 类型名称吗?
那里接受的答案允许您编写get_name<A>()
并获得一个字符串(_view),它是“A”。并且get_name<B>()
将是“B”等等。这在您的情况下可能很有用,因为:
- 没有动态分配的数据。
- 不构造任何对象(尽管@jhill515 也为您提供)
- 不需要静态成员 - 这可以与您甚至无法控制的类一起使用!
推荐阅读
- git - git pull 不覆盖文件
- python - SQLITE3 python - 带有占位符的SELECT sql查询给出错误
- csv - 来自 csv 的 D3_Position 坐标
- algorithm - 什么是 API 接口?
- excel - Excel 使用 iODBC 连接器从 PostgreSQL 接收数据
- python - 有没有办法在不添加'foo ='的情况下更改类变量?
- prolog - 从 Prolog 中的事实中检索元素
- python - 从另一个模型类中减去一个模型类中一个 django 字段的值
- python - 如何在随机变量中添加计数函数
- algorithm - 严重受限背包问题的算法