好的,这是我的结构:
struct sudurjanie {
string stoka_ime;
string proizvoditel;
double cena;
int kolichestvo;
};接下来,我创建队列:
queue<sudurjanie> q;但当我写这个的时候:
cin >> q.push(sudurjanie.stoka_ime);在错误列表中,写以下内容:
IntelliSense:非静态成员引用必须相对于特定对象
好吧,当我尝试这个:
cout << q.back();为什么要写这个:
没有运算符
"<<"与这些操作数匹配。
发布于 2012-06-12 20:35:41
听起来你可能想这样做:
queue<sudurjanie> q;
sudurjanie item;
cin >> item.stoka_ime;
q.push(item);cin>>q.push(sudurjanie.stoka_ime);这句话没有任何意义。字面意思是:
string.
sudurjanie.stoka_ime传递给q的push()方法。这将失败,因为push()从cin中提供了一个sudurjanie类型的参数到push()调用的结果中,即void。这将失败,因为将其读入void.没有任何意义。
发布于 2012-06-12 20:37:08
您对sudurjanie.stoka_ime的引用是无效的,因为您要命名的是类型的成员,而不是它的实例。
尝试:
sudurjanie tmp;
cin >> tmp.stoka_ime;
q.push(tmp);这将创建sudurjanie的一个实例,名为tmp,读取字段,然后将实例推到队列中。
发布于 2012-06-12 20:35:48
先读取项目,然后将结构添加到队列中。
https://stackoverflow.com/questions/11004400
复制相似问题