경고 제거 : "변수 '결과'는 C ++에서 'if'조건이 거짓 일 때마다 초기화되지 않은 상태로 사용됩니다."

로렌조 토스카 노

나는 이것과 비슷한 질문을 보았지만 템플릿을 사용하는 것을 찾을 수 없다는 사실 때문에 도움이되지 않았습니다. 숙제를 위해 모든 유형의 변수와 함께 사용할 수있는 스택을 코딩해야하므로 템플릿을 사용하기로 결정했습니다. 이것은 내가 변수를 초기화하는 것을 막고, 내 코드는 함수 pop ()에 대한 경고를 제공합니다. 누구든지 그러한 경고를 제거하는 방법에 대한 제안을 할 수 있습니까?

내 함수 pop () :

template<typename T>
    T stack<T>::pop(){
        T result;
        if(!empty()){
            result = tos->data;
            Node<T> *tmp = tos;
            tos = tos->next;
            delete tmp;
        }else{
            std::cerr<<"ERROR empty stack"<<std::endl;
        }
        return result;
    }
반딧불

대신 단순히 인쇄 std::cerr하여 pop()그것이 다룰 수없는 무언가를 명중하는 경우 예외를 발생한다 방법. 자동으로 실패하고 초기화되지 않은 개체 반환하면 나중에 문제 발생합니다.

다음과 같은 예외를 던질 수 있습니다.

//...
else {
    throw std::runtime_error("ERROR empty stack");
}
//...

그런 다음 if 문의 분기 result에서만 선언 true하면됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관