在c ++中使用堆栈

Bra*_*don 2 c++ stack stl

对于一个类,我必须使用堆栈.从我可以告诉我创建一个堆栈

#include <stack>
class c1
{
    stack<Point> openstack;
};
Run Code Online (Sandbox Code Playgroud)

Point是我创建的一个类,它有一个x和y int值来存储点,以便在简单的2D图形中使用.我遇到的问题是,如果我这样做

Point p = openstack.pop();
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:"没有合适的consturtor可以从void转换为Point"

Point有一个set函数,它接受一个点,并使用传递的点来存储x和y值,但这也不起作用.

Point p;
p.set(openstack.pop()); // does not work
Run Code Online (Sandbox Code Playgroud)

有人能告诉我我做错了什么吗?如果您需要信息,请询问 - 如果需要,我可以提供更多信息.

Dav*_*nan 8

pop()不返回值.它只删除了最高值.它的声明如下:

void pop();
Run Code Online (Sandbox Code Playgroud)

要获得您需要调用的最高价值top().之后你可以打电话pop().

Point p = openstack.top();
openstack.pop();
Run Code Online (Sandbox Code Playgroud)

几个原因导致pop()不返回弹出的值.