2

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

?

2
  • How is that an IntelliSense error? That seems kind of odd... Commented Jun 12, 2012 at 20:36
  • You should not use a double for prices! (cena means price in some slavic languages). Commented Jun 13, 2012 at 4:00

4 Answers 4

6

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:

  1. Pass 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.
  2. Read from cin into the result of the push() call, which is void. This will fail because it makes no sense to read into void.
Sign up to request clarification or add additional context in comments.

6 Comments

Ok, when I try this: cout<<q.back(); , why write this: no operator "<<" matches these operands ?
Because you are trying to write an object of type sudurjanie to cout, and cout has no idea how it's supposed to represent this type. You would need to overload the operator<<() function yourself for this to work. Consider trying cout << q.back().stoka_ime << endl; instead.
Ok but I need to get all data from q?
@Nikolai : Maybe it's time to consider starting over with a good book...
If you need general guidance programming, this is probably not the place to ask. SO deals with specific questions, not "make my whole program work" questions, and we generally assume that you have at least a basic grasp of the programming language you are asking about.
|
3

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

Comments

0

Read the item in first and then add the struct to the queue.

Comments

0

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).

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.