c++用数组、结构体和指针排序



我有类似的家庭作业,但是对于我的结构体,它指向我的数组,因为它包含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,这是一个字符串。

最新更新