2012-03-16 97 views
4

...任何人的想法如何解決這些問題?智能感知的C++/CLI錯誤,編譯好

Visual Studio 2011測試版,試圖得到一些框架準備,現在通過一個有限的問題列表。

的代碼是:

String^ pUser = (System::String^) pConnectionStringBuilder["UserName"]; 
String^ pPass = (System::String^) pConnectionStringBuilder["Password"]; 
String^ pBroker = (System::String^) pConnectionStringBuilder["Broker"]; 

pConnectionStringBuilder是ConnectionStringBuilder的一個實例。

的錯誤:

2 IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 62 39 Tradex.Connectivity.Rithmic 
3 IntelliSense: expression must have integral or unscoped enum type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 62 64 Tradex.Connectivity.Rithmic 
4 IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 63 39 Tradex.Connectivity.Rithmic 
5 IntelliSense: expression must have integral or unscoped enum type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 63 64 Tradex.Connectivity.Rithmic 
6 IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 64 41 Tradex.Connectivity.Rithmic 
7 IntelliSense: expression must have integral or unscoped enum type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 64 66 Tradex.Connectivity.Rithmic 
8 IntelliSense: expression must have pointer-to-object or handle-to-CLI-array type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 269 6 Tradex.Connectivity.Rithmic 
9 IntelliSense: expression must have integral or unscoped enum type c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 269 32 Tradex.Connectivity.Rithmic 

,他們根本就沒有任何意義可言;)

還有另外兩個警告,但很顯然這不是一個錯誤:

1>特瑞.Connection.Rithmic.vcxproj - > C:\ Work \ Tradex \ Source \ Debug \ Tradex.Connectivity.Rithmic.dll rithmicconnector.cpp(104):warning:C6001:使用未初始化的內存'oParams'。 rithmicconnector.cpp(108):警告:C6001:使用未初始化的內存'oLoginParams'。 1>代碼分析完成 - 0個錯誤,0個警告

編譯得很好。

我試着用pConnectionStringBuilder-> default - guess what;)抱怨。

2 IntelliSense: class "System::Data::Common::DbConnectionStringBuilder" has no member "default" c:\Work\Tradex\Source\Tradex.Connectivity.Rithmic\RithmicConnector.cpp 62 65 Tradex.Connectivity.Rithmic 

順帶還是錯誤的,它編譯)

我真的不想讓智能感知錯誤。

+1

很明顯,在這裏鍵盤椅子接口的問題,取代該模塊,你的問題將消失:) – 2012-03-23 10:58:16

回答

11

針對C++/CLI的Intellisense通常會感到困惑並報告誤報錯誤。它不如C#的Intellisense好。公平地說,C++代碼通常比C#代碼增量式分析要困難得多(例如,如果我將一個#define編譯指示添加到頭文件中,則導入頭文件的任何文件的結構可能完全改變)。

一旦我開始看到虛假的智能感知錯誤,我通常只是將其關閉錯誤列表窗口:

  1. 右鍵單擊錯誤列表窗口中的內容
  2. 選中「顯示智能感知錯誤」
+1

我稱之爲Intellidumb。 – 2012-07-16 23:24:43

+0

@NickBedford我稱之爲讓人放心。這裏沒有天網的機會 - 可能無法找到核火箭開始;) – TomTom 2014-03-12 12:12:37

1

如果你總是在C++中工作,並通過智能感知錯誤困擾,可能要關閉永久這個錯誤報告: 工具 - >選項 - >文本編輯器 - > C/C++ - >高級 - > IntelliSence - >禁用Erro r報告

+0

這就是你應該做的。只需禁用它。非常感謝你@Manuel。 – 2014-07-24 10:50:52

1

我發現如果一個文件沒有換行符結束(例如,包含文件的最後一行是#endif,並且後面沒有CRLF)它會弄亂Intellisense並導致它標記錯誤。

+0

我無法相信解決了我的問題!謝謝。 – AutomaticHourglass 2015-06-19 07:22:46