好的,那是我的结构:
struct sudurjanie {
string stoka_ime;
string proizvoditel;
double cena;
int kolichestvo;
};
接下来我创建队列:
queue<sudurjanie> q;
但是当我写这篇文章时:
cin >> q.push(sudurjanie.stoka_ime);
在错误列表中写下:
IntelliSense:非静态成员引用必须与特定对象相关
好的,当我尝试这个时:
cout << q.back();
,为什么写这个:
没有运算符
"<<"
匹配这些操作数
答案 0 :(得分:6)
听起来你可能想要这样做:
queue<sudurjanie> q;
sudurjanie item;
cin >> item.stoka_ime;
q.push(item);
行cin>>q.push(sudurjanie.stoka_ime);
没有任何意义。从字面上看,它意味着:
sudurjanie.stoka_ime
传递给q
的{{1}}方法。这将失败,因为push()
在您提供类型为push()
的参数时接受类型为sudurjanie
的参数。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)结构的一个成员(一个字符串)。