我可以基于私有/受保护成员分配类枚举吗?

mbo*_*utt 4 c++ enums field class member

我有一堂课,需要公开其受保护成员之一的大小。

我无法公开该字段,也不想引入一个新字段,因此我试图引入一个枚举并将其分配给该字段的大小,如下所示:

class MyObject
{
  public:
    enum
    {
        myFieldSize = sizeof(myField),
    };
  protected:
    uint8_t myField;
}
Run Code Online (Sandbox Code Playgroud)

但是我的编译器告诉我找不到“ myField”的声明。这是预期的行为吗?我还有其他访问myField的公共函数,为什么枚举看似无法访问?

Bat*_*eba 5

这是类中的顺序很重要的实例之一:当时myField不存在sizeof(myField)

一种解决方法是在uint8_t myField;之上enum