簡體   English   中英

我正在嘗試創建一個枚舉,但我得到“標識符預期錯誤”

[英]I'm trying to create an enum but I get “identifier expected error”

我有這個代碼:

    enum EXECUTION_COMMANDS {
   "buy" = OP_BUY,
   "sell" = OP_SELL,
   "buyLimit" = OP_BUYLIMIT,
   "sellLimit" = OP_SELLLIMIT,
   "buyStop" = OP_BUYSTOP,
   "sellStop" = OP_SELLSTOP
};

所以基本上我想要創建的是當程序看到字符串“buy”時,它必須將其讀取為 OP_BUY。 由於 OP_BUY 是 MQL4 上的內部命令,我該怎么做? 還有另一種方法可以做到這一點嗎?

enum EXECUTION_COMMANDS
{
    buy = OP_BUY,
    ...
};

現在標識符buy基本上是一個名為 integer 的常量,其值與OP_BUY相同。 您可以使用buyOP_BUY作為彼此的別名。


如果你真的想使用字符串,那么你需要創建一個 map,將字符串映射到它們的 integer 值:

std::unordered_map<std::string, int> command_map = {
    { "buy", OP_BUY },
    ...
};

然后使用它使用command_map["buy"] ,它將返回OP_BUYint值。

只需取出引號。

枚舉數的名稱應該是標識符,而不是字符串。

enum EXECUTION_COMMANDS
{
   buy       = OP_BUY,
   sell      = OP_SELL,
   buyLimit  = OP_BUYLIMIT,
   sellLimit = OP_SELLLIMIT,
   buyStop   = OP_BUYSTOP,
   sellStop  = OP_SELLSTOP
};

但是,如果您希望它替換源代碼中的實際字符串文字,您會感到失望。 要么不使用字符串文字,要么,如果您不能將輸入更改為字符串,請使用std::map<std::string, int>引入一些映射。

暫無
暫無

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

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