结构类型的队列

时间:2012-06-12 20:31:51

标签: c++ struct queue

好的,那是我的结构:

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

接下来我创建队列:

queue<sudurjanie> q;

但是当我写这篇文章时:

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

在错误列表中写下:

  

IntelliSense:非静态成员引用必须与特定对象相关

好的,当我尝试这个时:

cout << q.back();

,为什么写这个:

  

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

4 个答案:

答案 0 :(得分:6)

听起来你可能想要这样做:

queue<sudurjanie> q;

sudurjanie item;
cin >> item.stoka_ime;

q.push(item);

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

  1. sudurjanie.stoka_ime传递给q的{​​{1}}方法。这将失败,因为push()在您提供类型为push()的参数时接受类型为sudurjanie的参数。
  2. string读取cin来电的结果push()。这将失败,因为阅读void没有意义。

答案 1 :(得分:3)

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

尝试:

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

这将创建sudurjanie的实例,名为tmp,读取该字段,然后将实例推送到队列

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您的队列是sudurjanie结构的队列。你想要进入队列的是

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

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