假设向量有一个别名:
typedef std::vector<double> PlanetData;
我希望它的字段可以通过一些键访问:
double x = planet_data[PlanetDataKeys::PosX]; //planet_data is of type PlanetData
我可以在命名空间内定义枚举:
namespace PlanetDataKeys {
enum {
PosX = 0,
PosY = 1
};
}
enum class
更安全:
enum class PlanetDataKeys {
PosX = 0,
PosY = 1
};
然而,作为
int
类型已禁用,这将需要写入:
double x = planet_data[static_cast<int>(PlanetDataKeys::PosX)];
这有点尴尬。
在这种情况下,哪种方法更好?为什么?
在实际代码中,PlanetData有7个字段,如果我决定扩展它,可能会更多。我在解析一个字符串的时候创建了一个实例
data_string = "date: 2903248.12343, position=[124543254.1343214,123213.12341,63456.1234], velocity=[..."
这就是为什么我希望它是一个向量:使用类似
planet_data.push_back(ParseNextDouble(data_string));