2012-11-13 4 views
2

클래스 내부에서 선언 된 구조체에 대한 포인터를 반환하는 코드에 문제가 있습니다.구조체에 포인터를 반환하는 함수

#ifndef SORTEDLIST_H 
#define SORTEDLIST_H 

class SortedList{ 

public: 

    SortedList(); 

... 

private: 

    struct Listnode {  

     Student *student; 

     Listnode *next; 

    }; 

    static Listnode *copyList (Listnode *L); 

}; 

#endif 

SortedList.cpp이

#include "SortedList.h" 

... 

// Here is where the problem lies 

Listnode SortedList::*copyList(Listnode *L) 

{ 

    return 0; // for NULL 

} 

분명히, 복사 목록 방법은 늘 컴파일

SortedList.h : 여기에 지금까지 내 코드입니다. Microsoft Visual Studio를 사용하고 있는데 컴파일러에서 "Listnode"가 알 수 없다고 알려줍니다.

1>------ Build started: Project: Program3, Configuration: Debug Win32 ------ 

1> SortedList.cpp 

sortedlist.cpp (159) : 오류 C2657은 : 'SortedList는 :: *'문장의 시작 부분에서 발견 (당신은 유형을 지정하는 것을 잊지 않았다 내가 컴파일 할 때, 여기에 내가 얻을 whhat입니다 ?)

sortedlist.cpp (159) : 오류 C4430 : 누락 된 형식 지정자 - int가 있다고 가정합니다. 참고 : C++은 기본적 INT

sortedlist.cpp를 지원하지 않는 (159) : 오류 C2065 : 'L': 선언되지 않은 식별자

sortedlist.cpp (159) : 오류 C4430 : 누락 형태 지정자 - int로 가정한다. 참고 : C++은 default-int를 지원하지 않습니다.

sortedlist.cpp (159) : 치명적인 오류 C1903 : 이전 오류에서 복구 할 수 없습니다.

SortedList::Listnode* SortedList::copyList(ListNode* L) 
{ 
    return 0; //For NULL 
} 

또한, struct Listnode 선언해야 하나 public : 컴파일을 중지

도움말을 크게 감상 할 수
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

... 빨리

cpp가 파일 내부
+0

게시물에 사용해야하는 형식은 Markdown입니다. http://daringfireball.net/projects/markdown/basics – jogojapan

답변

2

함수는 다음과 같이 정의한다 또는 class SortedList 외부

+0

정말 고마워요! – GammaGuy

+1

괄호 안에는'SortedList ::'가 필요하지 않습니다. 그 시점에서 여러분은'SortedList' 함수 안에 있기 때문에 범위 안에있게됩니다. 즉,'Listnode'가 범위에 있음을 의미합니다. – Jarryd

관련 문제