2014-02-28 40 views

回答

2

爲了解決這個問題,你可以寫:

Type myIntType = Type::\int();

更多的解釋如下。該\int()構造函數在不同的地方定義至少兩次:

  • 在Java類的抽象語法樹定義了在Declarations使用。它是源代碼中int這個詞的表示。
  • 在java :: lang :: m3 :: Core中定義的TypeSymbol\int()代表一個符號類型。

他們有相同的名稱,因爲他們指向相同的概念,但在不同的表示。第一個用於直接表示源代碼,第二個用於抽象符號解釋。

要區分這兩個表示,您應該導入定義AST節點的模塊,或者導入定義TypeSymbols的模塊。如果你碰巧有兩個進口的,你應該明確地選擇表示:

Type myIntType = Type::\int(); TypeSymbol mySymbol = TypeSymbol::\int();

所以最終解釋錯誤消息,系統選擇了第二種\ INT的()`在TypeSymbol建立一個價值,並且您試圖將它分配給第一種變量。

2

\int()TypeSymbol,我認爲你正在尋找

Type inttype = int(); 
+0

該行只是失敗而沒有拋出錯誤。 – Kebabbi

+0

該行失敗,因爲'int'是應該轉義的保留關鍵字:'\ int()' – jurgenv