C ++链接列表程序

时间:2013-11-16 07:12:43

标签: c++ list

我创建了下面的函数来排序链接列表。尝试编译程序时,我收到3条错误消息。

  1. 代码行:while(c!= NULL&&(c-> iNam.compare(nam)< 0))

    请求'c-> invtLst :: iNam'中的成员'compare',其指针类型为'std :: string *。

  2. 代码行:t-> iNam.assign(nam);

    请求'c-> invtLst :: iNam'中的成员'assign',其指针类型为'std :: string *

  3. 代码行:t-> iNam.assign(nam);

    请求'c-> invtLst :: iNam'中的成员'assign',其指针类型为'std :: string *

  4. 所有问题似乎都在我的“void sortListF7(invtLst * c,string nam)中 “功能。有人可以帮我解决我做错了什么吗?

    void sortListF7(invtLst *c, string nam)
    {
    invtLst *p, *t;
    p = NULL;
    
    while(c != NULL && (c->iNam.compare(nam) < 0))
    {
        p = c;
        c = c->loc;
        if(p != NULL)
        {
            t = newNodeF4();
            t->iNam.assign(nam);
            p->loc = t;
            infile >> c->iNum >> c->iQty >> c->iPrc >> c->iSfStk;
            t->loc = c;
        }
        else
        {
            t = newNodeF4();
            t->iNam.assign(nam);
            t->loc = c;
            infile >> c->iNum >> c->iQty >> c->iPrc >> c->iSfStk;
            head = t;
        }
    }
    

    }

    我也在使用这个程序的结构。

    struct invtLst
    {
        string *iNam;
        float iNum;
        float iQty;
        float iPrc;
        float iSfStk;
        float iPrcStck;
        float pNq;
        char flag;
        invtLst *loc;
    };
    

2 个答案:

答案 0 :(得分:0)

所有错误都指向一件事:

iNam是字符串的类型指针;要访问它,您必须使用->运算符或* .。因此,为了帮助您入门,您尝试在代码中使用iNam,请执行(*c->iNam).methodc->iNam->method

答案 1 :(得分:0)

iNam实际上是指向字符串的指针,而您尝试为其指定字符串值。

如果您可以更改struct invtLst,请将行从string *iNam;更改为string iNam;

如果您无法更改结构,请按照Smac89的回答。使用c->iNam->compare(nam)代替c->iNam.compare(nam),依此类推。