2016-03-06 5 views
-3

Я успешно прошел через мой код и он заполняет массив, но когда я пытаюсь извлечь данные, которые он говорит мне «Ошибка. Выражение должно иметь тип класса»Как извлечь данные из массива struct?

void Inventory::fillInventory(char* buff, int len) 
{ 
using namespace std; 
int i = 0; 
int upcNum = 0; 
string itDesc = ""; 
string itPrice = ""; 
bool itTax = false; 
do 
{ 
    do 
    { 
     // assign upcNum 
     if (buff[i] >= 48 && buff[i] <= 57) 
     { 
      string str = ""; 
      while (buff[i] != 32) 
      { 
       str += buff[i]; 
       i++; 
      } 
      upcNum = stoi(str, nullptr, 10); 
     } 
     // assign itDesc 
     else if (buff[i] >= 97 && buff[i] <= 122) 
     { 
      string str = ""; 
      while (buff[i] != 32) 
      { 
       str += buff[i]; 
       i++; 
      } 
      itDesc = str; 
     } 
     // assign itPrice 
     else if (buff[i] == 36) 
     { 
      string str = ""; 
      while (buff[i] != 32) 
      { 
       str += buff[i]; 
       i++; 
      } 
      itPrice = str; 
     } 
     // assign itTax 
     else if (buff[i] == 78 || buff[i] == 84) 
     { 
      switch (buff[i]) 
      { 
      case 78: 
       itTax = false; 
       break; 
      case 84: 
       itTax = true; 
       break; 
      } 
     } 
     i++; 
    } while (buff[i] != 10 && i < len); 


    // fill struct 
    newItem = new Item; 
    newItem->upc = upcNum; 
    newItem->desc = itDesc; 
    newItem->cost = itPrice; 
    newItem->tax = itTax; 

    if (inInventory < MAX_INV) 
    { 
     inventory[inInventory] = newItem; 
    } 
    else 
    { 
     cout << "Inventory is full..." << endl; 
    } 
    delete newItem; 
} while (i < bufferLength); 
int upcInt = inventory[0].upc; // this is my error 
} 

Однако решение Ники, казалось, работал.

+0

upcNum is int. – yorTsenoJ

+1

Что такое Item, newItem, инвентарь? – deviantfan

+0

Пожалуйста, разместите [минимальный тестовый пример] (http://stackoverflow.com/help/mcve). –

ответ

1
inventory[inInventory] = newItem; 

заставляет меня верить, что инвентаризация представляет собой массив указателей на Item с. Если это так, вам нужно использовать inventory[0]->upc для доступа к элементам данных элемента вместо inventory[0].upc, потому что каждый элемент является указателем на Item.

+0

Это сделало это! Спасибо! – yorTsenoJ

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