2012-11-09 3 views
2

클래스의 경우 스택을 사용해야합니다. 내가C++에서 스택 사용

#include <stack> 
class c1 
{ 
    stack<Point> openstack; 
}; 

포인트로 스택을 만들 말할 수있는 건 내가 그 간단한 2D 그래픽에 사용하여 포인트를 저장하는 x와 y int 값을 가지고 만든 클래스입니다. 제가하는 데 문제는 내가

Point p = openstack.pop(); 

을 할 경우 내가 오류를 얻을 수 있습니다 :

포인트는 포인트를 취하는 설정 기능을 가지며 것 "없음 적합한 consturtor가 포인트 무효로 변환하기 위해 존재하지 않는다" 전달 된 점을 사용하여 x 및 y 값을 저장하지만 이는 작동하지 않습니다.

Point p; 
p.set(openstack.pop()); // does not work 

누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 정보가 필요하면 요청하십시오. 필요한 경우 더 제공 할 수 있습니다.

+2

일부 문서를 읽는다면 자신의 질문에 대답 할 수 있습니다. 좋은 책이 없다면 [cppreference.com] (http://en.cppreference.com/w/cpp/container/stack)도 좋은 소식입니다. – Blastfurnace

+0

[매뉴얼 읽기] (http://en.cppreference.com/w/cpp/container/stack/pop)는이 질문을 피했을 것입니다 ... –

답변

8

pop() 값을 반환하지 않습니다. 단지 최상위 값을 제거합니다. 다음과 같이 선언 된 것 :

void pop(); 

top() 전화를 당신이 필요로 최고 값을 얻을 수 있습니다. 그 후에는 pop()으로 전화 할 수 있습니다.

Point p = openstack.top(); 
openstack.pop(); 

pop()가 튀어 값을 반환하지 않는 이유 a couple reasons을 수 있습니다.