1

だから基本的に私はポイント構造体を持っています

typedef struct point {
unsigned int x;
unsigned int y;
} Point;

ポイントを保存するためのキューを作成したいと思います。

queue<Point> *pointsQueue = new queue<Point>; // shouldn't be changed

ただし、ポイントをキューにプッシュしようとすると、次のエラーが表示されます

error:request for member 'push' in 'pointQueue', which is of non-class type 'std::queue<Point>*'

基本的に Point p を作成しています

Point p;
p.x = 3;
p.y = 4;

次に、それをキューにプッシュします

pointQueue.push(p);

そして私はインクルードファイルとして持っています:

#include <queue>
4

3 に答える 3

2

pointQueueはポインターであり、オブジェクトのように扱っています。ポインターである理由がないように思われるため、最も簡単な解決策はオブジェクトを使用することです。

std::queue<Point> pointsQueue;

本当にポインターが必要な場合は、->演算子を介してそのメンバーにアクセスする必要があります。

pointQueue->push(p);

*または、演算子を使用してポインターを逆参照することもできます。これにより、それが指すオブジェクトへの参照が得られます。

(*pointQueue).push(p);

余談ですが、typedef型を宣言するための構文は C++ では必要ありません。実際、かなり奇妙に見えます。これは通常のアプローチです:

struct Point 
{
  unsigned int x;
  unsigned int y;
};
于 2013-11-03T08:17:47.060 に答える
0

queueではなく、へのポインターがありますqueue。メンバーへのアクセスに使用->するか、間接参照を削除してください。

于 2013-11-03T08:19:12.243 に答える
0

変数へのポインタがあります。したがって、キューを使用する前に、キュー自体を取得する必要があります。このような:

(*pointQueue).push(p);

またはより短いが、同じ:

pointQueue->push(p);
于 2013-11-03T08:19:24.980 に答える