用于存储struct对象的队列

时间:2013-11-03 08:16:12

标签: c++ queue

所以基本上我有点结构

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>

3 个答案:

答案 0 :(得分:2)

pointQueue是一个指针,你就像对象一样对待。由于似乎没有理由将它作为指针,因此最简单的解决方案是使用对象:

std::queue<Point> pointsQueue;

如果你真的需要指针,那么你需要通过->运算符访问其成员:

pointQueue->push(p);

或者,您可以使用*运算符取消引用指针。这将为您提供对其指向的对象的引用:

(*pointQueue).push(p);

顺便说一句,在C ++中,声明类型的typedef语法不是必需的,实际上它看起来很奇怪。这是通常的做法:

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

答案 1 :(得分:0)

您有指向queue的指针,而不是queue。使用->访问成员,或删除间接。

答案 2 :(得分:0)

你有一个指向变量的指针。因此,在使用队列之前,您应该自己获得一个队列。像这样:

(*pointQueue).push(p);

或更短,但相同:

pointQueue->push(p);