从结构类型排队

Queue from struct type

本文关键字:排队 类型 结构      更新时间:2023-10-16

好的,这是我的结构:

struct sudurjanie {
    string stoka_ime;
    string proizvoditel;
    double cena;
    int kolichestvo;
};

接下来我创建队列:

queue<sudurjanie> q;

但是当我写这篇文章时:

cin >> q.push(sudurjanie.stoka_ime);

在错误列表中写下以下内容:

智能感知:非静态成员引用必须相对于特定对象

好的,当我尝试这个时:

cout << q.back();

,为什么要写这个:

没有运算符"<<"与这些操作数匹配

听起来您可能想这样做:

queue<sudurjanie> q;
sudurjanie item;
cin >> item.stoka_ime;
q.push(item);

cin>>q.push(sudurjanie.stoka_ime);线没有任何意义。 从字面上看,它的意思是:

  1. sudurjanie.stoka_ime传递给qpush()方法。 这将失败,因为push()在提供类型为 string 的参数时采用类型 sudurjanie 的参数。
  2. cin读取push()调用的结果,即void 。 这将失败,因为读入void是没有意义的。

您对sudurjanie.stoka_ime的引用无效,因为您命名的是该类型的成员,而不是它的实例。

尝试:

sudurjanie tmp;
cin >> tmp.stoka_ime;
q.push(tmp);

这将创建一个名为 tmpsudurjanie 实例,读取字段,然后将实例推送到队列中

首先读取其中的项,然后将结构添加到队列中。

您的队列是sudurjanie结构的队列。您尝试推送到队列中的是

a) 结构的名称,而不是实例的名称

b) 结构的成员(字符串)。