2

好的,这是我的结构:

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

4 回答 4

6

听起来您可能想这样做:

queue<sudurjanie> q;

sudurjanie item;
cin >> item.stoka_ime;

q.push(item);

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

  1. 传递sudurjanie.stoka_imeqpush()方法。这将失败,因为在您提供了 type 的参数时push()接受了 type的参数。sudurjaniestring
  2. cin从调用结果中读取push(),即void. 这将失败,因为读入void.
于 2012-06-12T20:35:41.093 回答
3

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

尝试:

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

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

于 2012-06-12T20:37:08.700 回答
0

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

于 2012-06-12T20:35:48.047 回答
0

您的队列是一个sudurjanie结构队列。你试图推入队列的是

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

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

于 2012-06-12T20:36:34.673 回答