[英]c++ typedef/type substitution for enumeration class
據我所知,目前typedef
無法對C ++ 11 enum class
進行typedef
。 我想知道在封裝類之外引用變量enum
時,是否還有其他方法可以減少變量enum
名稱的長度。 這是一個例子:
// I would like to do something along the lines of:
class SegmentActivityState;
using SegmentActivityType = SegmentActivityState::ActivityStateType;
// ...However, this results in the compile time error:
// 'SegmentActivityState' does not name a type.
// Enumeration class definition
class SegmentActivityState
{
public:
enum class ActivityStateType : Index
{
PreExecution = 0, /**< Pre-execution state. */
Execution = 1, /**< Execution state. */
PostExecution = 2 /**< Post-execution state. */
};
private:
ActivityStateType ActivityState;
/**< unique object identifier tag. */
public:
// ... Methods that work on the ActivityState
}
最重要的問題是我必須引用SegmentActivityType
之外的enum
的名稱長度。 例如,為了進行類型比較,我需要編寫SegmentActivity.getState() == SegmentActivityState::ActivityStateType::PreExecution
,這非常冗長。 我不想做的兩件事是:
SegmentActivityState
typedef
。 enum class
ActivityStateType移到SegmentActivityState outside of the class
定義之外。 您的問題與作為枚舉無關。 您無法執行此操作,因為您正在嘗試訪問未定義類的成員。 無論成員是什么,這都將永遠無法進行。
將typedef放在類定義之后, 就可以了 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.