Witam, mam zadanie, w którym muszę napisać program składający się z paru funkcji. Pierwszą z nich jest funkcja przyjmująca jako argumenty referencję do strumienia wejściowego (istream) oraz referencję do struktury o nazwie Item.
Wygląda ona tak:
struct Item
{
char name[32];
int volume;
double value;
};
W int main() zadeklarowałem:
ifstream inFile("input.txt");
Zatem funkcja wygląda u mnie tak:
bool loadItem(istream &inFile, Item &item)
{
if (!inFile) {
cout << "file error";
return false;
} for(int i = 0; i < 5(przykładowo 5, nie doszedłem jak zaimplementować to dla n); i++)
{
inFile.getline(item.name, 32);
inFile >> item.volume >> item.volume;
} return true;
}
Funkcja ma zwracać prawdę jeżeli uda się wczytać ze strumienia nazwę, objętość oraz wartość przedmiotów, gdy plik np. skończy się lub zostanie napotkany błąd ma być zwrócony false.
I tutaj zaczyna się problem. Jak wczytać do tablicy dynamicznej struktur, (którą utworzyłem w mainie w podany niżej sposób) wszystkie przedmioty odczytane z pliku, kiedy funkcja loadItem przyjmuje tylko referencję do przedmiotu oraz tą referencję do istream.
Item * itemsList = new Item [n];
Natomiast lista w pliku .txt wygląda na przykład tak:
grzesiek 300 2.5
twix 340 1.30
3bit 150 2.85