我重復出現這樣的錯誤:error: use of undeclared identifier 'item'
和"error: expected unqualified-id
cin.getline(*(cart->(item+i)->itemName), SIZE1);
。當我在一個結構中訪問一個結構時,我將指針表示法與箭頭運算符一起使用。我知道我只填充了ShoppingCart類型的cart變量的一些成員,但是我不認為問題是從這里來的。我訪問ItemInfo類型的item變量的成員的方式似乎是錯誤的。不過,我不知道我的錯誤在哪里。如果有人能幫助我,我將不勝感激。我的代碼在這里:
#include <iostream>
using namespace std;
const int SIZE1 = 51,
SIZE2 = 11,
SIZE3 = 21;
struct ItemInfo
{
char itemName[SIZE1];
char itemID[SIZE2];
double price;
};
struct ShoppingCart
{
char shopperName[SIZE3];
ItemInfo *item;
int *itemCount;
double total;
};
void addToCart(ShoppingCart* cart);
int main()
{
ShoppingCart* cart = new ShoppingCart;
cart->item = nullptr;
addToCart(cart);
delete [] cart->item;
delete [] cart->itemCount;
delete cart;
return 0;
}
void addToCart(ShoppingCart* cart)
{
int numItems;
cout << "How many items are you purchasing?";
cin >> numItems;
cart->item = new ItemInfo[numItems];
cart->itemCount = new int[numItems];
for(int i = 0; i < numItems; i++)
{
cout << "\nEnter #" << i+1 << " item name: ";
cin.getline(*(cart->(item+i)->itemName), SIZE1);
cout << "\nEnter #" << i+1 << " item ID: ";
cin.getline(*(cart->(item+i)->itemID), SIZE2);
cout << "\nEnter #" << i+1 << " price: ";
cin >> *(cart->(item+i)->price);
cin.ignore();
cout << "\nEnter #" << i+1 << " quantity: ";
cin >> *(cart->itemCount+i);
cin.ignore();
}
}
您應該使用
cart->item[i]
,它更具可讀性,并且容易獲得優先權。如果仍希望或需要將加法與指針一起使用,則需要以不同的方式放置圓括號:
因為
item
是購物車cart
的成員。