2011-02-23 84 views
0

我正在使用VC++ 2010.非常基本? C++/CLI問題

我收到錯誤C2228。它表示在.Text之前它必須是結構體,類或unioun。

private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) { 
    using namespace std; 
    for(int r=0; r>(sizeof(x)/sizeof(x[0])); r++){ 
     if (x[r][1].find(textBox1.Text) != string::npos){ 
      label1.Text = (label1.Text+x[r][1]); 
      label2.Text = (label1.Text+x[r][2]); 
     } 
    } 
} 

它基本上是搜索一個二維數組,如果有什麼比賽你鍵入的內容,並顯示它,而你在打字,這是我提出申請的主要特徵看。 它在if語句上出現錯誤,兩次語句出現兩次,就是這樣,.Text在所有5次嘗試讀取錯誤時都會出現錯誤,與上面發佈的錯誤相同。

+2

這不是C++。 – 2011-02-23 11:11:09

+0

沒有足夠的信息。你甚至不提供行號。但是'textBox1'或'label1'有些問題......一個不是你認爲的。另外,我認爲你的意思是'label2'在最後一行內容。 – 2011-02-23 11:12:13

+0

是成員textBox1定義的?是否定義了label1和label2? – 2011-02-23 11:13:08

回答

0

試試這個:

using namespace std; 

private: 
    System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) { 
     for(int r=0; r > (sizeof(x)/sizeof(x[0])); r++) { 
      if (x[r][1].find(textBox1.Text) != string::npos){ 
      label1.Text = (label1.Text + x[r][1]); 
      label2.Text = (label1.Text + x[r][2]); 
      } 
     } 
    } 

的使用命令應該是在最高級別和格式就是這樣更好。我希望能解決這個問題。

+0

感謝您的幫助,(編輯)我通過將它放在我的預處理器行下方來修正了所有錯誤,但它仍然給出了相同的錯誤。 – 2011-02-23 11:17:13

+0

事實上,Asley只在函數內部使用命名空間std是很好的。從它的外觀來看,這個方法是在頭文件中聲明的,並且使用namespace std並不是一個好主意;在文件範圍的頭部。在課堂上,這可能是好的。無論如何,這不是它不起作用的原因,而是她使用的事實。在參考文獻上而不是 - >因爲她應該 – ds27680 2011-02-23 11:28:44

+0

He *;在另一個答案我改變他們 - >但我有一個錯誤,我不明白,然後兩個說+符號不接受任何東西在右邊。我在這個問題上發佈了他們。 – 2011-02-23 11:30:28

1

您應該使用 - >代替。

像這樣:textBox1-> Text-> ToString()或label1-> Text

+0

這解決了我的.Text錯誤,但現在我得到了這些:Error 1 error C2664:'unsigned int std :: basic_string <_Elem,_Traits,_Ax> :: find(const std :: basic_string <_Elem,_Traits,_Ax >&,unsigned int)const':無法將參數1從'System :: String ^'轉換爲'const std :: basic_string <_Elem,_Traits,_Ax>&'兩個關於+不在其右側 – 2011-02-23 11:26:04

+0

@Ashley Davies對此的共鳴是您正在使用STL,並且STL類型不能與託管類型一起使用。你應該使用STL.Net來代替。請參閱此處瞭解STL.NET的介紹。 http://msdn.microsoft.com/en-us/library/ms379600%28v=vs.80%29.aspx或這裏http://www.codeguru.com/columns/kate/article.php/c10297 – ds27680 2011-02-23 11:32:10

+1

@阿什利戴維斯或使用。NET容器,而不是(從System :: Collections :: Generic) – ds27680 2011-02-23 11:46:44