我可以根据 private/protected 成员分配 class 枚举吗?
Can I assign a class enum based on a private/protected member?
我有一个 class 并且需要使其受保护成员之一的大小 public 可用。
我无法创建字段public并且不想引入新的字段,所以我尝试引入一个枚举并将其分配给字段的大小,如下所示:
class MyObject
{
public:
enum
{
myFieldSize = sizeof(myField),
};
protected:
uint8_t myField;
}
但是我的编译器告诉我它找不到 "myField" 的声明。这是预期的行为吗?我还有其他 public 函数可以访问 myField,为什么枚举似乎无法访问?
这是您在 class 中的顺序很重要的实例之一:myField
在达到 sizeof(myField)
时不存在。
解决方法是在 enum
.
上方设置 uint8_t myField;
在枚举声明中使用名称myField 时未声明。交换数据成员声明,如
class MyObject
{
protected:
uint8_t myField;
public:
enum
{
myFieldSize = sizeof(myField),
};
};
我有一个 class 并且需要使其受保护成员之一的大小 public 可用。
我无法创建字段public并且不想引入新的字段,所以我尝试引入一个枚举并将其分配给字段的大小,如下所示:
class MyObject
{
public:
enum
{
myFieldSize = sizeof(myField),
};
protected:
uint8_t myField;
}
但是我的编译器告诉我它找不到 "myField" 的声明。这是预期的行为吗?我还有其他 public 函数可以访问 myField,为什么枚举似乎无法访问?
这是您在 class 中的顺序很重要的实例之一:myField
在达到 sizeof(myField)
时不存在。
解决方法是在 enum
.
uint8_t myField;
在枚举声明中使用名称myField 时未声明。交换数据成员声明,如
class MyObject
{
protected:
uint8_t myField;
public:
enum
{
myFieldSize = sizeof(myField),
};
};