2012-05-05 4 views
1

템플릿 및 메소드에 대한 몇 가지 주제를 발견했습니다. 그러나 나는 그것이 내 시나리오에 어떻게 적용되는지 알 수 없다. C++ - 템플릿 유형을 반환하는 메소드가있는 템플릿 클래스

template <class T> 
class SimpleLinkedList {} 

는 이제 가정하자이 내 템플릿 CLASSE이며이 방법이 포함되어

LinkedNode<T> * next(){}; 

LinkedNode 또한 템플릿과 SimpleLinkedList 템플릿에서 클래스 T를 사용합니다. 슬로우됩니다

오류 :

Member reference base type "LinkedNode<T>" is not a struct or union. 

는 지금은 구조체 또는 노동 조합이 무엇인지 알고 있지만, 내 방법이 잘못된 이유를 알아낼 수 없습니다.

편집

오류가 뭔가 완전히 다른 것 같았다. NVM.

감사합니다.

+2

정보가 충분하지 않습니다. 'LinkedNode '타입의 정의는 무엇입니까? –

+1

당신이 무엇을 요구하고 있는지 확실하지 않습니다 ... 자세히 설명해주십시오. – Sidar

+0

더 많은 정보를 제공해 줄 수 있습니까 –

답변

1

아마도 LinkedNode을 템플릿으로 사용하지 않고 SimpleLinkedList에 정의했습니다. LinkedNode<T> * next(){}에서 <T>을 삭제하려고 시도 할 수 있습니다. 이게 효과가 있니? 더 많은 정보가 필요합니다.

+0

템플릿 인수가 필요합니다. 작동하지 않습니다. – Sidar

+0

'LinkedNode'와'SimpleLinkedList' 전체보기 – demi

+0

솔직히 도움이되는 방법을 정말로 모르겠습니다. 템플릿 반환이 어떻게 작동해야하는지에 대한 규칙이 있어야합니다. – Sidar

0

SimpleLinkedList<T>::next()의 정의에서 을 참조 해제 할 때 포인터 의미를 사용해야합니다. current은 참조가 아닌 포인터입니다. previous에 대한 마찬가지로

LinkedNode<T> * next(){ 
    if (getSize() == 0 || current->next == NULL) return NULL; 
     return current; 
}; 

님의

LinkedNode<T> * next(){ 
    if (getSize() == 0 || current.next == NULL) return NULL; 
     return current; 
}; 

변경합니다.

+0

예, 나는 그것을 놓쳤습니다. 데미는 그것을 지적했다. 그러나 나는 자동 완성이 나에게 (코 델 라이트를 사용하여) 실패한 것처럼 나를 완전히 비난하지는 않을 것이다. 답장을 보내 주셔서 감사합니다. – Sidar