我正在尝试使用 IMU 的增益和偏移来计算温度,这就是我想要检索增益和偏移值的方式,以便我知道我从正确类型的 IMU 中获得了正确的值:
float gain = IMU_TEMPERATURE_CHARACTERISTICS::GAIN::type1;
float offset = IMU_TEMPERATURE_CHARACTERISTICS::ZERO_ADC_OFFSET::type1;
所以我创建了这个数据结构
struct IMU_TEMPERATURE_CHARACTERISTICS
{
enum GAIN
{
type1 = 4,
type2 = 256
};
enum ZERO_ADC_OFFSET
{
type1 = 15,
type2 = 20
};
};
但是,我的 IDE 抱怨
Redefinition of enumerator 'type1' previous definition is here
显然也关于
type2
Redefinition of enumerator 'type2' previous definition is here
抱怨
type1
中定义的 type2
和 ZERO_ADC_OFFSET
。
我想知道我应该如何更改我的数据结构,甚至在这种情况下我应该使用什么数据结构?
一些示例代码受到高度赞赏。谢谢!
看起来你以奇怪的方式组织符号(本末倒置)。
考虑将其更改为这种形式
struct ImuTempretureCharacteristic {
double gain;
double offset;
};
constexpr ImuTempretureCharacteristic type1{4, 15};
constexpr ImuTempretureCharacteristic type2{256, 20};
您对第一个代码片段的要求,我将其缩短为这样
float gain = imu::gain::type1;
float offset = imu::offset::type1;
本质上是有 4 个数字,并且能够通过两个级别的命名来访问它们,每个级别都有 2 个可能的替代方案。
我还怀疑你对这 4 个数字实际上是 4 个常量这一事实保持沉默,从某种意义上说,你的程序中永远不会有比这 4 个数字更大的值。
如果上述情况属实,那么您可能会对嵌套命名空间感到满意:
namespace imu {
namespace gain {
double type1 = 4;
double type2 = 256;
}
namespace offset {
double type1 = 15;
double type2 = 20;
}
}
不管怎样,不管我的假设对你的意图是否正确,我都同意你本末倒置。