【发布时间】:2017-03-15 10:14:21
【问题描述】:
我正在编译一些将 emun 定义为受保护的代码,像这样
class MPU9250
{
protected:
// Set initial input parameters
enum A_scale
{
AFS_2G = 0,
AFS_4G,
AFS_8G,
AFS_16G
};
}
我想像这样在我的方法中使用那个枚举,这个方法现在在同一个类中是公共的
void setAccScale(A_scale accScale);
但是在编译时出错说
../../MPU9250.h: In function 'void initMovementDetected()':
../../MPU9250.h:196:7: error: 'MPU9250::A_scale AFS_8G' is protected
AFS_8G,
^
../../nRF52.cpp:49:31: error: within this context
mpu9250.setAccScale(MPU9250::AFS_8G);
这是为什么?我可以setAccScalepublic 吗?
谢谢
class MPU9250
{
protected:
// Set initial input parameters
enum A_scale
{
AFS_2G = 0,
AFS_4G,
AFS_8G,
AFS_16G
};
public:
void setAccScale(A_scale accScale);
}
编辑:我发现部分错误,还有一个名为 Ascale 的变量,我将枚举重命名为 A_scale
【问题讨论】:
-
我没有收到错误消息?
-
我愿意,上面那个使用
gcc-arm-none-eabi/5_2-2015q4/bin/arm-none-eabi-g++作为编译器 -
你试过
void setAccScale(MPU9250::Ascale)吗? -
@m.rogalski 是的,我知道了,
../../MPU9250.h: In function 'void initMovementDetected()': ../../MPU9250.h:196:7: error: 'MPU9250::A_scale AFS_8G' is protected AFS_8G, ^ ../../nRF52.cpp:49:31: error: within this context mpu9250.setAccScale(MPU9250::AFS_8G); -
我认为您想公开使用此
enum Ascale,这就是出现错误的原因。我检查了这个here,一切正常......