Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 来自结构类型的队列_C++_Struct_Queue - Fatal编程技术网

C++ 来自结构类型的队列

C++ 来自结构类型的队列,c++,struct,queue,C++,Struct,Queue,好的,这是我的结构: struct sudurjanie { string stoka_ime; string proizvoditel; double cena; int kolichestvo; }; 接下来,我创建队列: queue<sudurjanie> q; 在错误列表中写入以下内容: cin >> q.push(sudurjanie.stoka_ime); IntelliSense:非静态成员引用必须相对于特定对象 好的,

好的,这是我的结构:

struct sudurjanie {
    string stoka_ime;
    string proizvoditel;
    double cena;
    int kolichestvo;
};
接下来,我创建队列:

queue<sudurjanie> q;
在错误列表中写入以下内容:

cin >> q.push(sudurjanie.stoka_ime);
IntelliSense:非静态成员引用必须相对于特定对象

好的,当我尝试这个:

cout << q.back();

cout听起来您可能想这样做:

queue<sudurjanie> q;

sudurjanie item;
cin >> item.stoka_ime;

q.push(item);
队列q;
sudurjanie项目;
cin>>item.stoka_ime;
q、 推(项);
cin>>q.push(sudurjanie.stoka\u ime)没有任何意义。字面意思是:

  • sudurjanie.stoka_ime
    传递给
    q
    push()
    方法。这将失败,因为
    push()
    接受类型为
    sudurjanie
    的参数,而您提供了类型为
    string
    的参数
  • cin
    读取
    push()
    调用的结果,即
    void
    。这将失败,因为读入
    void
    没有任何意义

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

    您的队列是由
    sudurjanie
    structs组成的队列。您试图推到队列中的是

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


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

    您对
    sudurjanie.stoka\u ime
    的引用无效,因为您正在命名该类型的成员,而不是其实例

    尝试:


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

    这是一个IntelliSense错误吗?这似乎有点奇怪…你不应该用双倍的价格!(cena在某些斯拉夫语中的意思是price)。好吧,当我尝试这样做时:可能是因为您试图将
    sudurjanie
    类型的对象写入
    cout
    ,而
    cout
    不知道它应该如何表示这种类型。你需要重载<代码>操作程序,但我需要从Q?@ Nikolai获得所有数据:也许是时候考虑开始……如果你需要一般的指导程序,这可能不是问答的地方。因此,我们处理的是特定的问题,而不是“让我的整个程序工作起来”的问题,我们通常假设您至少对所问的编程语言有基本的掌握。
    sudurjanie tmp;
    cin >> tmp.stoka_ime;
    q.push(tmp);