是否可以基于私有/受保护成员分配类枚举?
Can I assign a class enum based on a private/protected member?
我有一个类,需要公开其受保护成员之一的大小。
我无法公开字段,也不想引入新字段,因此我正在尝试引入一个枚举并将其分配给字段的大小,如下所示:
class MyObject
{
public:
enum
{
myFieldSize = sizeof(myField),
};
protected:
uint8_t myField;
}
但是我的编译器告诉我它找不到"myField"的声明。这是预期的行为吗?我还有其他访问myField的公共函数,为什么枚举似乎无法这样做?
这是类中内容的顺序很重要的实例之一:myField
在到达sizeof(myField)
点时不存在。
解决方法是将uint8_t myField;
放在enum
上方。
在枚举声明中使用名称 myField 时,不会声明该名称。交换数据成员声明,例如
class MyObject
{
protected:
uint8_t myField;
public:
enum
{
myFieldSize = sizeof(myField),
};
};
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- C++类成员:堆栈与堆分配
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 在成员初始值设定项列表中分配unique_ptr
- 对象分配-成员函数的使用无效错误
- 如何确定对象是否已分配成员
- 我可以分配成员访问操作员的返回值吗?
- lambda表达式分配成员函数指针
- 如何在C++中从命令行参数分配成员变量
- 为什么分配成员会引发 NullReferenceException
- 错误:在只读对象中分配成员
- 在只读对象中分配成员 '
- 分配成员变量时出现分段错误
- 具有动态分配成员的结构体的向量
- 按值分配成员对象:我的假设是否正确
- 创建std::shared_ptr来分配成员变量时内存泄漏
- 处理包含动态分配成员的对象向量