结构类型的队列

Nik*_*kov 2 c++ queue struct

好的,这是我的结构:

struct sudurjanie {
    string stoka_ime;
    string proizvoditel;
    double cena;
    int kolichestvo;
};
Run Code Online (Sandbox Code Playgroud)

接下来我创建队列:

queue<sudurjanie> q;
Run Code Online (Sandbox Code Playgroud)

但是当我写这个:

cin >> q.push(sudurjanie.stoka_ime);
Run Code Online (Sandbox Code Playgroud)

在错误列表中写这个:

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

好的,当我尝试这个:

cout << q.back();
Run Code Online (Sandbox Code Playgroud)

,为什么写这个:

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

cdh*_*wie 6

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

queue<sudurjanie> q;

sudurjanie item;
cin >> item.stoka_ime;

q.push(item);
Run Code Online (Sandbox Code Playgroud)

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

  1. 传递sudurjanie.stoka_imeqpush()方法.这将失败,因为push()sudurjanie提供类型的参数时接受类型的参数string.
  2. cinpush()调用的结果,即void.这将失败,因为阅读没有意义void.

  • @Nikolai:也许是时候考虑重新开始[好书](http://stackoverflow.com/q/388242/636019)...... (4认同)
  • 因为你试图将`sudurjanie`类型的对象写入`cout`,而`cout`不知道它应该如何表示这种类型.你需要自己重载`operator <<()`函数才能使它工作.考虑尝试`cout << q.back().stoka_ime << endl;`代替. (2认同)
  • 如果您需要一般的指导编程,这可能不是要求的地方.SO处理具体问题,而不是"让我的整个程序工作"问题,我们通常假设您至少掌握了您所询问的编程语言. (2认同)