![](/img/trans.png)
[英]How do i change enum to char? I'm trying to cast it but it gives me an error
[英]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
相同。 您可以使用buy
和OP_BUY
作為彼此的別名。
如果你真的想使用字符串,那么你需要創建一個 map,將字符串映射到它們的 integer 值:
std::unordered_map<std::string, int> command_map = {
{ "buy", OP_BUY },
...
};
然后使用它使用command_map["buy"]
,它將返回OP_BUY
的int
值。
只需取出引號。
枚舉數的名稱應該是標識符,而不是字符串。
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.