我有:
enum ID
和
std::vector<BlockData> DATA
枚举以抽象出索引。
和包含每个索引信息的DATA。
应该可以执行以下操作:DATA[ID::AIR]
每个
DATA
元素是常量,在编译时已知
class BlockData {
public:
int someData;
BlockData() = default;
explicit BlockData(int someData) : someData(someData) {};
};
namespace Blocks {
enum ID {
AIR = 0,
DIRT = 1,
};
std::vector<BlockData> DATA(2);
void init() {
Blocks::DATA[Blocks::ID::AIR] = BlockData{32};
Blocks::DATA[Blocks::ID::DIRT] = BlockData{6};
}
}
我可以初始化
数据
矢量内联,如:
std::vector<BlockData> DATA(block1data, block2data);
但我想使用enum来分配它们,以提高可读性,就像我在代码中所做的那样。问题是它需要一些初始化功能。是否可以在不调用初始化函数的情况下执行此操作?理想情况下,不会在命名空间中乱丢与初始化相关的函数和其他数据。