Из-за приоритета оператора *integerarray[0].first
переводится как *(integerarray[0].first)
, что не то, что вам нужно.Вам нужно использовать (*integerarray)[0].first
.
cout << (*integerarray)[0].first << endl;
Вы можете упростить свою жизнь, передав ссылку.
void foo(std::array<Datatype, 100>& integerarray){
cout << integerarray[0].first << endl;
}
Кроме того, вам не нужно использовать typedef struct DataType { ... } DataType;
вC ++.Вы можете использовать только struct DataType { ... };