【问题标题】:C++ Sorting with Arrays and Structs and a pointer使用数组和结构以及指针进行 C++ 排序
【发布时间】:2015-10-01 18:49:08
【问题描述】:

我有类似的家庭作业,但是我的结构指向我的数组,因为它包含 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);
    }
}

【问题讨论】:

  • 所以,你得到一个错误。考虑阅读错误消息。
  • 你说你有一个类似的任务,类似什么?描述任务会很有帮助。另请在您的问题中包含错误消息。

标签: c++ arrays sorting pointers struct


【解决方案1】:

我假设giftItems 是一个包含length 个元素的数组。要引用数组中的单个项目,您需要使用以下形式:

giftItems[i].member

而不是这种形式:

Item *giftItems[i]->member

【讨论】:

    【解决方案2】:

    试图不只是给你解决方案......

    我们来看看:

    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 这是一个字符串。这肯定会导致错误。

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 2020-03-15
      • 1970-01-01
      • 2014-07-04
      • 2015-12-13
      • 1970-01-01
      • 2016-11-29
      • 2021-08-02
      相关资源
      最近更新 更多