Кто-нибудь может объяснить, почему следующий код не компилируется (странно отформатирован, чтобы облегчить определение проблемы):
ListView ^ listview = gcnew ListView();
listview->Items->AddRange( gcnew array<ListViewItem^> {
gcnew ListViewItem( gcnew array<String^> { L"red", L"fish" } ),
gcnew ListViewItem( gcnew array<String^> { L"green", L"eggs" } )
});
Это дает ошибку компиляции
ошибка C2440: «инициализация»: невозможно преобразовать из «const wchar_t [4]» в «System :: Windows :: Forms :: ListViewItem ^»
Если код разбит на две строки, как показано ниже, то все хорошо:
ListView^ listview = gcnew ListView();
ListViewItem^ lvi1 = gcnew ListViewItem( gcnew array<String^> { L"red", L"fish" } );
ListViewItem^ lvi2 = gcnew ListViewItem( gcnew array<String^> { L"green", L"eggs" } );
listview->Items->AddRange( gcnew array<ListViewItem^> {
lvi1,
lvi2
});
Игнорирование того, почему кто-то хочет сделать монолитный однострочный элемент для заполнения ListView, почему компилятор не может инсталлировать ListViewItems в исходном коде и как бы такой один лайнер был бы написан?