对于一个类,我必须使用堆栈。据我所知,我用
创建一个堆栈#include <stack>
class c1
{
stack<Point> openstack;
};
Point是我创建的一个类,它有一个x和y int值来存储点,以便在简单的2D图形中使用。我遇到的问题是,如果我这样做
Point p = openstack.pop();
我收到错误:“没有合适的consturtor可以从void转换为Point”
Point有一个set函数,它接受一个点并使用传递的点来存储x和y值,但这也不起作用。
Point p;
p.set(openstack.pop()); // does not work
有人能告诉我我做错了什么吗?如果您需要信息,请询问 - 如果需要,我可以提供更多信息。
答案 0 :(得分:8)
pop()
不会返回值。它只删除了最高值。它的声明如下:
void pop();
要获得最高价值,您需要拨打top()
。之后,您可以拨打pop()
。
Point p = openstack.top();
openstack.pop();
有a couple reasons为什么pop()
不会返回弹出的值。