我需要爲我的大學作業做一個基於函數(或命令)的語言的C++解釋器。解釋器必須讀取輸入文件,提取單詞(字符串),生成命令並執行它們。所有的命令都是從一個普通的超類繼承而來的類(例如,Command
),它有一個名爲execute
的虛擬方法。對於從輸入文件讀取的每個單詞,創建一個命令並存儲在vector<Command>
中。我想使用一個哈希表,其鍵是命令(字符串)的名稱,其值是某種對象,它允許我創建一個特定的類(或讓我訪問構造函數的特定類),可以輕鬆地爲每個單詞創建類,而不是使用if-else-if鏈。C++中的「類」(不是對象)的哈希表
現在,我打算用一個名爲generate
的虛擬方法創建一個CommandGenerator
類,它將返回一個新的Command
對象。我的命令散列表的值將是CommandGenerator
類的對象。所以我從其中衍生出許多其他所有命令的子類,它們返回從Command
派生的特定新對象。
但是,這樣的事情是否已經存在?還是有更好的方法來做到這一點?是否有任何類型的對象可以從類中提取來表示它?
「如果每個命令都是Command的子類,爲什麼不使用std :: vector並將指針指向每個子類的實例?然後你可以遍歷vector並調用你的虛擬執行函數,「好吧,這就是我要用剛剛創建的對象做的事情:把它們推到一個vector上並遍歷vector,調用'execute',但是我的問題必須根據從文件中讀取的名稱生成這些對象,而不使用if-else-if如果對於每個名稱。 –
LuisABOL
@Luis查看編輯答案 –
好多了,man!你有鏈接到任何'函數<>'引用,因爲通過在谷歌上鍵入「C++函數<>」,我只能找到在C++中的函數或函數聲明的概念... ... – LuisABOL