2011-02-23 78 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