我有类似的家庭作业,但是对于我的结构体,它指向我的数组,因为它包含99个项目。我如何包括指针,使它将从每个项目读取?这是我目前所知道的。当我尝试运行它时,我得到一个错误,其中temp.name = ...
是。
struct Item
{
string name;
float price;
char category;
int numberOfPiecesInStock;
Date lastSDate;
Date outOfStockSinceDate;
};
using namespace std;
int main ()
{
Item *giftItems;
///////////MORE CODE ///////
}
void sortByItemNum(Item *giftItems, int length)
{
Item temp;
int i, j;
for (i = 1; i < length; i++)
{
temp.name = Item *giftItems[i]->name;
temp.price = Item *giftItems[i]->price;
temp.category = Item *giftItems[i]->category;
temp.numberOfPiecesInStock = Item *giftItems[i]->numberOfPiecesInStock;
j = 1;
while (j > 0 && (temp.numberOfPiecesInStock = giftItems[j-1]->numberOfPiecesInStock > temp.numberOfPiecesInStock)
{
giftItems[j]->numberOfPiecesInStock = giftItems[j-1].numberOfPiecesInStock;
j--;
}
// giftItems[j]->numberOfPiecesInStock = temp;
// swap (Item temp, i, j);
}
}
我假设giftItems
是一个包含length
个元素的数组。要引用数组中的单个项,需要使用以下表单:
giftItems[i].member
而不是这个形式:
Item *giftItems[i]->member
试图不只是给你解决方案…
让我们看一下:
temp.name = Item *giftItems[i]->name;
temp.price = Item *giftItems[i]->price;
temp.category = Item *giftItems[i]->category;
temp.numberOfPiecesInStock = Item *giftItems[i]->numberOfPiecesInStock;
你最有可能得到的是一个类型转换错误,因为在上面的赋值中,你的指针前面有一个"Item"。
你告诉程序在运行时强制转换
*giftItems[i]->name
赋值给Item对象,然后赋值给temp.name,这是一个字符串。