어쩌면 내가 더 새롭고, 어떤 종류의 질문이 속해 있는지 정의 할 수 없기 때문일 수 있습니다. 그래서 나는 검색 후 원하는 결과를 찾지 못했습니다.템플릿 반환을 처리하는 방법은 무엇입니까?
은 C++ 템플릿
template<class T> struct Node
{
T value;
Node<T>* pre;
Node<T>* next;
};
template<class T> class Flist
{
private:
Node<T>* front;
Node<T>* end;
int count;
public:
Flist();
~Flist();
Flist(const Flist& C_list);
inline void Deeply_Copy(const Flist& Copylist);
bool Isempty() const;
int Listsize() const;
Node<T>& Listfront()const;
Node<T>& Listend() const;
void push_front(T N);
void push_back(T N);
void del_front();
void del_back();
Node<T>* Listfind(T x);
T ShowKey(int n);
};
template<class T> T Flist<T>::ShowKey(int n)
{
if (front == 0)
{
cout << "there is no element is the list.." << endl;
return ???;
}
Node<T>* temp = front;
while(n--)
{
temp = temp->next;
}
return temp->value;
}
함수 showkey로 (INT의 N) 나는 (단지 보여주지)가 반환 할 n 번째 요소의 값 내 링크리스트의 구현입니다, 그러나 목록이 비어있는 경우 , 나는 무엇을 돌려야할지 모른다. 나는 그 절차를 멈추기 위해 출구를 사용하고 싶지 않다. 이 상황을 다루는 데 더욱 친숙한 방법이 있습니까?
예외를 던지겠습니까? – chris
'발견되지 않음'을 나타내는 고유 한 'T'를 작성하십시오. 또는 반복자를 반환하십시오. – jww
이 줄'temp = temp-> next;는'n '이 목록의 항목 수보다 큰 경우 NULL 포인터를 역 참조합니다. –