試圖解釋這是最好的方式。我目前編碼解析器,它接受字面,其中文字可能是一個內部/實際/字符串等...如何從父類訪問子類
上面的鏈接顯示的代碼的部分與調試執行,隨後通過使用當前變量。正如你所看到的'字面'不包含任何東西。它不應該在Int Literal類中顯示值嗎?我還附加了Literal和Int Literal類文件。
試圖解釋這是最好的方式。我目前編碼解析器,它接受字面,其中文字可能是一個內部/實際/字符串等...如何從父類訪問子類
上面的鏈接顯示的代碼的部分與調試執行,隨後通過使用當前變量。正如你所看到的'字面'不包含任何東西。它不應該在Int Literal類中顯示值嗎?我還附加了Literal和Int Literal類文件。
new ASTNodeInt(currToken)
給你一個指向堆上的ASTNodeInt
的指針,而不是'實際的'ASTNodeInt
。通過執行literal->intlit
來尊重指針,您可以從中獲得一個值。你的調試器看起來是正確的,它說literal
是一個ASTNodeLiteral *
(一個指針),它的值是一個內存地址。
此外,您的代碼似乎泄漏了內存 - 您將創建一個新的ASTNodeInt
,然後創建另一個新的並返回,而不會在您創建的原始內容上調用delete
。
http://imgur.com/a/ZIc3b 我無法使用'literal-> intlit'來檢索一個值。這是因爲指針指向ASTLiteral。無論如何它會自動指向ASTNodeInt以檢索值'intlit'? –
也許'(static_cast
非常感謝,這工作!有沒有可能我可以自動將其轉換爲子實例?這是因爲我不能簡單地告訴將文字轉換爲什麼,因爲它可能是多個子類中的一個。 –
什麼是「Java」標籤? –
_「不應該顯示Int Literal類中的值嗎?」_不明白爲什麼。這不在範圍之內;只有一個指針。 –