0
I 큐를 코딩하기 식을 사용 하였다
, getFirst와 호출 한 기능으로 정의된다 :C++ 클래스 템플릿 리턴 값 오류
Queue<int> Q;
Q.add(2);
cout << Q.getFirst() << endl;
출력은 2이며, 이는 내가 원하는 것입니다.
하지만 !!! 나는에 코드를 변경하는 경우 :
Queue<int> Q;
Q.add(2);
cout << Q.getFirst() << endl;
cout << Q.getFirst() << endl;
출력되지 않습니다 :
2
2
하지만 뭔가 같은 : 몇 가지 생각 후
2
2657382
, 나는에 코드를 수정 :
Queue<int> Q;
Q.add(2);
cout << Q.getFirst();
cout << Q.getFirst() << endl;
이번엔 효과가 있습니다! 그냥 괜찮아 !! 출력은 22입니다.
아무도 나에게 여기에서 문제를 친절하게 설명 할 수 있습니까?
노드 및 대기열의 정의는 일반적이고 일반적이다 :
template<typename T>
class Node{
public:
Node(T data, Node* left = 0, Node* right = 0): _data(data), _left(left), _right(right){
if(left)
left->_right = this;
if(right)
right->_left = this;
}
Node(): _right(0){}
private:
T _data;
Node<T>* _left;
Node<T>* _right;
friend class Queque<T>;
};
template<typename T>
class Queque{
public:
Queque(): _first(new Node<T>), _size(0){
_first->_right = _first;
_first->_left = _first;
}
void addFirst(T item){
Node<T>(item, _first, _first->_right);
_size++;
}
T examineFirst(){
return _first->_right->_data;
}
private:
Node<T>* const _first;
int _size;
};
'머리'를 어떻게 선언하고 지정 했습니까? –
대기열에 대한 코드를 공유하지 않는 한 아닙니다. 코드를 볼 수 없을 때 다른 사람들 코드를 디버그하기가 어렵습니다. – john