我创建了下面的函数来排序链接列表。尝试编译程序时,我收到3条错误消息。
代码行:while(c!= NULL&&(c-> iNam.compare(nam)< 0))
请求'c-> invtLst :: iNam'中的成员'compare',其指针类型为'std :: string *。
代码行:t-> iNam.assign(nam);
请求'c-> invtLst :: iNam'中的成员'assign',其指针类型为'std :: string *
代码行:t-> iNam.assign(nam);
请求'c-> invtLst :: iNam'中的成员'assign',其指针类型为'std :: string *
所有问题似乎都在我的“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;
};
答案 0 :(得分:0)
所有错误都指向一件事:
iNam是字符串的类型指针;要访问它,您必须使用->
运算符或* .
。因此,为了帮助您入门,您尝试在代码中使用iNam,请执行(*c->iNam).method
或c->iNam->method
答案 1 :(得分:0)
iNam
实际上是指向字符串的指针,而您尝试为其指定字符串值。
如果您可以更改struct invtLst
,请将行从string *iNam;
更改为string iNam;
。
如果您无法更改结构,请按照Smac89的回答。使用c->iNam->compare(nam)
代替c->iNam.compare(nam)
,依此类推。