簡體   English   中英

Typedef C++ 中的枚舉值

[英]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重命名為SIZEsize 因為它是一個成員,所以它幾乎不會與您程序中的任何其他size混淆。

我將在這里采取不同的策略。

由於 TABLE_SIZE 在矩陣類中沒有多大意義(它有點作用),

反問:如果沒有意義,你為什么要這樣做? 答案是出於某種原因,您需要矩陣與基表的大小相同。 那么為什么要隱瞞事實呢? 明確。 不要掩蓋矩陣大小和表格大小相同的事實。 想想可憐的未來維護者(可能是你),他們必須 go 犁過那個額外的間接級別(可能沒有評論為什么)。

您不僅應該明確,而且有意使矩陣大小與基礎表大小相同,這是一個值得評論的設計決策。

總是像未來的維護者是一個知道你住在哪里的殺人狂一樣編程。

typedef是聲明類型別名的關鍵字,但TABLE_SIZE不是類型。

您可以使用預處理器:

#define MATRIX_SIZE TABLE_SIZE

(等待未經證實的“宏是邪惡的。”聲稱,Go on。我敢說。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM