簡體   English   中英

用c ++ typedef /類型替換枚舉類

[英]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 ,這非常冗長。 我不想做的兩件事是:

  1. SegmentActivityState typedef
  2. enum class ActivityStateType移到SegmentActivityState outside of the class定義之外。

您的問題與作為枚舉無關。 您無法執行此操作,因為您正在嘗試訪問未定義類的成員。 無論成員是什么,這都將永遠無法進行。

將typedef放在類定義之后, 就可以了

暫無
暫無

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

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