2016-10-15 2 views
-1

포인터 스택에 문제가 있습니다. ob1이라는 포인터의 스택을 가지고 있습니다.스택에서 객체에 대한 포인터를 가져 오는 중

stack<object*> ob1; 

그리고 나서 객체에 대한 포인터를 만들고 스택에 넣습니다. 스택에서이 포인터를 검색하려고 할 때 이 메서드를 사용합니다.

object * tag; 
tag = new object(); 
tag = ob1.pop(); 

는하지만 "error C2440: cannot convert void to object*는"나는 잘못이 무엇인지 혼동 얻을. 도움을 주시면 감사하겠습니다.

+2

이 코드로 수행하려는 작업을 이해할 수 없습니다. 'tag = new object()'는 무엇입니까? 너는 그것을 즉시 누설한다. 게다가,'ob1.pop()'은 값을 반환하지 않습니다 (따라서 에러). C + +를 배우기 위해 어떤 책을 사용하고 있습니까? 표준 라이브러리 도구 및 함수를 조회 할 때 어떤 참조를 사용합니까? –

+0

방금 ​​스택에서 포인터를 팝하는 방법을 찾고 있습니다. 하지만 나는 어떻게 몰라? 나는 초급이다. – Rommel

+0

스택에서 요소를 뽑아 내고 싶다면'ob1.pop();'이라고 쓰면됩니다. 당신이 나에게 말하지 않은 것을하기를 원한다면, 더 많은 코드가 필요할 것이고, 당신이하고 싶은 것을 더 잘 설명해야 할 것입니다. 다시, 어떤 책과 참고 자료를 사용하고 있습니까? 이러한 것들이 여기에 설명되어 있지 않다고 믿기는 어렵습니다. –

답변

0

pop은 아무 것도 반환하지 않으므로이 오류가 발생합니다.

here을 참조하십시오. 반환 유형은 void입니다. 요소를 얻으려면 top() 회원이 필요합니다. N.B. pop()은 요소의 소멸자를 호출합니다.

+0

이것은 좋은 질문이 아닙니다. 그건 당신의 대답은 잘못이지만, 그 OP의 코드가 그렇게 컴파일러 오류가 그들의 걱정의 최소 깨진입니다. – user4581301

+0

그걸 부인할 수 없다 ... Google 번역에서 네덜란드 단어 'rommel'을 조회 ... –

관련 문제