2008-12-12 8 views
0

나는이있다 : " '&'토큰 전에 예상 초기화"나에게 다음과 같은 오류를주고있다C++ 템플릿과 외부 함수 선언

template <typename T> 
class myList 
{ 
    ... 
    class myIterator 
    { 
     ... 
     T& operator*(); 
    } 
} 
... 
template<typename T> 
T& myList<T>::myIterator::operator*() 
{ 
    ... 
} 

. 내가 뭘해야되는거야? 이미 "template myList :: myIterator"를 추가하기 전에 시도했지만 작동하지 않았습니다.

template <typename T> 
class myList 
{ 
public: 
    class myIterator 
    { 
    public: 
     T& operator*(); 
    }; 
}; 

답변

3


당신이 무난만큼 간단해야 코드를 게시 할,하지만 여전히 컴파일 가능한해야합니다. 물건을 자르면 깔끔하게 될 것이고 그때 당신은 아마 당신이 고정시키고 싶은 진짜 실수를 제거 할 것입니다. 사람들에게 코드를 보여 주면 여기 사람들이 문제를 찾는 것이 좋습니다.

이 경우에는 제거한 일부 코드에만 적용 할 수 있습니다.

template <typename T> 
class myList 
{ 
    public: 
    class myIterator 
    { 
     public: 
     T& operator*(); 
    }; 
}; 

template<typename T> 
T& myList<T>::myIterator::operator*() 
{ 
    static T x; 
    return x; 
} 

int main() 
{ 
    myList<int>    a; 
    myList<int>::myIterator b; 
    int&     c= *b; 
} 
+0

이것은 나를 위해 잘 만들어집니다 (세미콜론 사용). 세미콜론이 없으면 '&'토큰이 아니라 세미콜론에 대한 오류가 발생합니다. 어쩌면 "..."의 코드가 적합 할 수도 있습니다. – Marcin

+0

네가 나를 위해 지어 준다. OP 코드로 엉망이 된 것을 모르겠다 .- 그는 코드를 실제로 보여줘야한다. –

+0

템플릿을 사용하지 않는 경우 템플릿을 사용하지 않으면 모든 의미 검사가 완료되지 않습니다 (T를 사용할 수 없기 때문에). –

0

미세 컴파일 : 일부 세미콜론과 대중에 대해 어떻게