我有类似这样的家庭作业,但是我的结构指向我的数组,因为它包含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);
}
}
答案 0 :(得分:0)
我认为giftItems
是一个数量为length
的数组。要引用数组中的单个项,您需要使用以下格式:
giftItems[i].member
而不是这种形式:
Item *giftItems[i]->member
答案 1 :(得分:0)
试图不只是给你解决方案......
我们来看看:
temp.name = Item *giftItems[i]->name;
temp.price = Item *giftItems[i]->price;
temp.category = Item *giftItems[i]->category;
temp.numberOfPiecesInStock = Item *giftItems[i]->numberOfPiecesInStock;
您最有可能得到的是投射错误,因为您在上述作业中的指针前面有“项目”。
您在运行时告诉程序要强制转换
*giftItems[i]->name
到Item对象,然后将其分配给temp.name,这是一个字符串。这肯定会导致错误。