Reputation: 167
Ok, that is my struct:
struct sudurjanie {
string stoka_ime;
string proizvoditel;
double cena;
int kolichestvo;
};
Next I create queue:
queue<sudurjanie> q;
But when I write this:
cin >> q.push(sudurjanie.stoka_ime);
In error list write this:
IntelliSense: a nonstatic member reference must be relative to a specific object
Ok, when I try this:
cout << q.back();
, why write this:
no operator
"<<"
matches these operands
?
Upvotes: 2
Views: 10865
Reputation: 28762
Your reference to sudurjanie.stoka_ime
is invalid as you are naming a member of the type, not an instance of it.
Try:
sudurjanie tmp;
cin >> tmp.stoka_ime;
q.push(tmp);
This will create an instance of sudurjanie
, named tmp
, read the field, then push the instance onto the queue
Upvotes: 3
Reputation: 21351
Your queue is a queue of sudurjanie
structs. What you are trying to push into the queue is
a) the name of your struct and not an instance
b) a member of the struct (a string).
Upvotes: 0
Reputation: 168988
It sounds like you may have wanted to do this instead:
queue<sudurjanie> q;
sudurjanie item;
cin >> item.stoka_ime;
q.push(item);
The line cin>>q.push(sudurjanie.stoka_ime);
doesn't make any sense. Literally, it means:
sudurjanie.stoka_ime
to q
's push()
method. This will fail, because push()
takes an argument of type sudurjanie
while you have supplied an argument of type string
.cin
into the result of the push()
call, which is void
. This will fail because it makes no sense to read into void
.Upvotes: 6