在C ++中,类型定义一个枚举值

| 我有一个具有在派生类中使用的枚举值的基类。基类为
Table<>
,派生类为
Matrix<>
。现在,
Table<>
中的枚举值为
TABLE_SIZE
,在
Matrix<>
类中使用。由于
TABLE_SIZE
在矩阵类中没有多大意义(确实有一点!),我想我应该将其typedef定义为与
Matrix<>
MATRIX_SIZE
)更一致的东西。
typedef TABLE_SIZE MATRIX_SIZE;
那没有用,这有点令人惊讶。我猜我不能typedef值,因为枚举是一种类型,但不是值(不确定这是否是正确的观察)?所以,现在的问题是,我如何才能完成上述任务? 编辑:我忘记提及的一件事是,我不希望Matrix类的大小增加(是的,我知道这只是很小的增加,对大多数人来说都没有关系,对我而言,确实如此)。     
已邀请:
        您可以定义一个枚举: 枚举{MATRIX_SIZE = TABLE_SIZE};     
        
typedef
用于类型,而不是值。采用
static const size_t MATRIX_SIZE = TABLE_SIZE;
(假设
size_t
是正确的类型。) 更好的是,只需将
TABLE_SIZE
重命名为
SIZE
size
;因为它是成员,所以几乎不能与程序中的其他任何14个混淆。     
        我将在这里采取不同的方针。   由于TABLE_SIZE在矩阵类中没有多大意义(有一点意义!), 修辞性问题:如果没有意义,为什么要这么做?答案是,出于某些原因,您需要将Matrix的大小与基本Table的大小相同。那么为什么要隐藏事实呢?要明确。不要混淆矩阵大小和表大小相同的事实。考虑一下可怜的未来维护者(可能是您),他不得不努力进行额外的间接访问(可能对原因不加评论)。 您不仅应该明确,而且有意使矩阵大小与基础表大小相同,这是一个值得评论的设计决策。 始终要编程,就好像将来的维护者是知道您居住地的杀人狂。     
        “ 9”是用于声明类型别名的关键字,但“ 3”不是类型。 您可以使用预处理器:
#define MATRIX_SIZE TABLE_SIZE
(等待未经证实的“宏是邪恶的!”的说法。继续,我敢。)     

要回复问题请先登录注册