[英]Typedef an enum value in C++
我有一個基礎 class,它有一個我在派生的 class 中使用的枚舉值。 基礎 class 是Table<>
,派生的 class 是Matrix<>
。 現在Table<>
中的枚舉值為TABLE_SIZE
,用於Matrix<>
class。 由於TABLE_SIZE
在矩陣類中沒有多大意義(它有一點作用),我想我會將它的類型定義為與Matrix<>
( MATRIX_SIZE
)更一致的東西。
typedef TABLE_SIZE MATRIX_SIZE;
這沒有奏效,這有點令人驚訝。 我猜我不能 typedef 值,因為枚舉是一種類型而不是值(不確定這是否是正確的觀察)? 所以,現在的問題是,我如何/我可以完成上述任務?
編輯:我忘了提到的一件事是我不希望 Matrix class 的尺寸增加(是的,我意識到這是一個微小的增加,對大多數人來說並不重要,就我而言,確實如此)。
你可以定義一個枚舉: enum { MATRIX_SIZE = TABLE_SIZE };
typedef
用於類型,而不是值。 利用
static const size_t MATRIX_SIZE = TABLE_SIZE;
(假設size_t
是正確的類型。)
更好的是,只需將TABLE_SIZE
重命名為SIZE
或size
; 因為它是一個成員,所以它幾乎不會與您程序中的任何其他size
混淆。
我將在這里采取不同的策略。
由於 TABLE_SIZE 在矩陣類中沒有多大意義(它有點作用),
反問:如果沒有意義,你為什么要這樣做? 答案是出於某種原因,您需要矩陣與基表的大小相同。 那么為什么要隱瞞事實呢? 明確。 不要掩蓋矩陣大小和表格大小相同的事實。 想想可憐的未來維護者(可能是你),他們必須 go 犁過那個額外的間接級別(可能沒有評論為什么)。
您不僅應該明確,而且有意使矩陣大小與基礎表大小相同,這是一個值得評論的設計決策。
總是像未來的維護者是一個知道你住在哪里的殺人狂一樣編程。
typedef
是聲明類型別名的關鍵字,但TABLE_SIZE
不是類型。
您可以使用預處理器:
#define MATRIX_SIZE TABLE_SIZE
(等待未經證實的“宏是邪惡的。”聲稱,Go on。我敢說。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.