2010-12-08 2 views
1

это мой код:ошибка C2440: «аргумент»: не удается преобразовать из «System :: Object ^» к «межд»

for (q = 0; q < Rows; q++) 
{ 
    for (r = 0; r < Columns; r++) 
    { 
     Array1[q, r] = combo1->Items[r]; 
     Array2[q, r] = combo2->Items[r]; 
    } 
} 

Я хочу, чтобы добавить элементы в массивах из комбинированных окон, но я получаю ошибка:

error C2440: 'argument' : cannot convert from 'System::Object ^' to 'int'

это код, который добавляет элементы в комбо

  for (int m = 0; m < Rows; m++) 
      { 
       array<String^> ^b = Aray1[m]->Split(gcnew array<Char> { ',' }); 
       for each (String ^Column in b) 
       { 
        Combo1->Items->Add(Column); 
       } 
      } 

ответ

1

Предполагая, что вы используете C++/CLI.

Судя по ошибке, похоже, что элементы Array1 напечатаны на int, а поле со списком содержит значения, завернутые в ObjecT^. Если значение действительно просто int заворачивают в Object^ тогда вам просто нужно распаковывать

Array1[q,r] = safe_cast<int>(combo1->Items[r]); 
Array2[q,r] = safe_cast<int>(combo2->Items[r]); 

Это будет падать, если Object^ фактически оберточной другой тип, кроме int

+0

теперь я получаю эту ошибку "указано cast недействителен. " с кодом Array1 [q, r] = safe_cast (combo1-> Items [r]); – 2010-12-08 22:25:01

Смежные вопросы