所以基本上我有点结构
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>
答案 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);