2

わかりました、それは私の構造です:

struct sudurjanie {
    string stoka_ime;
    string proizvoditel;
    double cena;
    int kolichestvo;
};

次に、キューを作成します。

queue<sudurjanie> q;

しかし、私がこれを書くとき:

cin >> q.push(sudurjanie.stoka_ime);

エラーリストに次のように記述します。

IntelliSense:非静的メンバー参照は特定のオブジェクトに関連している必要があります

わかりました、これを試してみると:

cout << q.back();

、なぜこれを書くのか:

"<<"これらのオペランドに一致する演算子はありません

4

4 に答える 4

6

代わりにこれを実行したかったようです。

queue<sudurjanie> q;

sudurjanie item;
cin >> item.stoka_ime;

q.push(item);

この線cin>>q.push(sudurjanie.stoka_ime);は意味がありません。文字通り、それは意味します:

  1. のメソッドsudurjanie.stoka_imeに渡します。タイプの引数を指定しているときにタイプの引数を取るため、これは失敗します。qpush()push()sudurjaniestring
  2. 呼び出しcinの結果を読み取ります。これはです。に読み込むのは意味がないため、これは失敗します。push()voidvoid
于 2012-06-12T20:35:41.093 に答える
3

タイプのインスタンスではなく、タイプのメンバーに名前を付けているため、への参照sudurjanie.stoka_imeは無効です。

試す:

sudurjanie tmp;
cin >> tmp.stoka_ime;
q.push(tmp);

これによりsudurjanie、という名前のインスタンスが作成されtmp、フィールドが読み取られてから、インスタンスがキューにプッシュされます。

于 2012-06-12T20:37:08.700 に答える
0

最初にアイテムを読み取り、次に構造体をキューに追加します。

于 2012-06-12T20:35:48.047 に答える
0

キューは構造体のキューですsudurjanie。キューにプッシュしようとしているのは

a)インスタンスではなく構造体の名前

b)構造体のメンバー(文字列)。

于 2012-06-12T20:36:34.673 に答える