Ответ 1
Я заставил его работать, написав следующее, но тогда данные не сохраняются в куче.
Item items[] {
{ 1, 1 },
{ 2, 2 }
};
Если вам это нужно в куче, используйте приведенное ниже решение, похоже, оно работает с компилятором vc++. (Обратите внимание, что это только обходной путь, и он не устраняет основную проблему):
Item* Items[2];
Items[0] = new Item{3,3};
Items[1] = new Item{4,4};
std::cout << (*Items[0]).id << (*Items[0]).type << std::endl;
std::cout << (*Items[1]).id << (*Items[1]).type << std::endl;
В качестве альтернативы вы можете создать массив, используя первый параметр, а затем скопировать его в массив в куче следующим образом:
Item items[2]{
{1,1},
{2,2}
};
Item* hitem = new Item[2];
for(int i = 0; i < 2; i++){
hitem[i].id = items[i].id + 4;
hitem[i].type = items[i].type + 4;
}
Хотя это медленно, оно работает так, как и должно работать даже на компиляторе vc++. Вы можете просмотреть весь код здесь:https://rextester.com/VNJM26393
Я не знаю, почему это работает только так...