2011-05-16 89 views
0

我想讓程序的用戶定義變量,然後對它們進行數學運算,如「define a:integer,b:double」,然後「print a * b 「誰在運行時創建變量(在C++中)

我發現我可以使用」提升任何「,但我需要變量的類型被動態識別,因爲想使用類的變量(對象).... 所以我想使用操作(+ * ...)

這就像我想做一個不同類型的容器,但是當我使用這個容器中的物品 後來我使用爲這個物品類型定義的操作!

在此先感謝

+0

這是一個家庭作業嗎?如果沒有,我不會使用C++來完成這項任務 – Simone 2011-05-16 12:26:25

+4

爲什麼選擇C++?爲什麼不是一種已經提供動態打字和運行時評估的語言? – ildjarn 2011-05-16 12:26:58

+0

那麼你建議什麼語言的傢伙? – Khaledvic 2011-05-16 12:29:37

回答

2

這將是不可能的,因爲當C++編譯你的代碼,它失去了很多的是在你的代碼,如函數名和變量類型的信息。它知道它們在編譯的那一刻,它產生的機器代碼可以完成你的代碼所說的內容,但最終它會被丟棄。 (好吧,不完全正確,但接近於此)。

所以,如果你想評估用戶輸入的表達式,你需要在你自己的代碼中做很多解析。也許另一個具有「eval」聲明的動態語言在這裏更有用?

加入:建議的語言:Javascript。因爲你可以在你喜歡的任何平臺上使用瀏覽器。

1

從評論:

爲什麼C++?爲什麼不是一種已經提供動態打字和運行時評估的語言? -

那麼你會說什麼語言的傢伙?

Python

+1

+1。你也可以創建一個。從Python腳本執行 – Simone 2011-05-16 13:09:23

0

我想你應該創建和更新一些符號表,當在算術運算中輸入和查詢定義命令時,它正在更新。一般來說,您不需要存儲任何類型的值,您可以假設一組有限的可能值類型(整數,實數等)並在表中表示它。就我個人而言,我會創建一個具有特定操作的類,用於從引用將存儲在符號表中的公共基礎派生的每個值類型。

1

如果您必須使用C++,我會建議嵌入一個動態腳本語言。 Python,Lua和Javascript都可以想到。

你將能夠做你想做的一切,並仍然編譯成一個.exe的代碼。

+0

我已經試過這個,但我有問題,我需要使用每種類型定義的操作(我讓我的課程,我想用它)謝謝 – Khaledvic 2011-05-18 06:29:10

+0

添加一些你正在嘗試的代碼要做的事情可能會幫助你,而不僅僅是簡單的描述。 – g19fanatic 2011-05-18 15:50:40