나는 같은 파일C++ 비 인라인 함수에서 사용하는 형식 정의는
template< typename T >
typename vector<T>::const_reference // Line X
vector<T>::at(size_type i) const
{
rangecheck();
return elems_[ i ];
}
template< typename T >
reference // Line Y
vector<T>::at(size_type i)
{
rangecheck();
return elems_[ i ];
}
라인 X에서이
template< typename T >
class vector {
public:
typedef T & reference;
typedef T const & const_reference;
typedef size_t size_type;
const_reference at(size_t) const;
reference at(size_t);
나중에 같은 클래스가 잘 컴파일이 있지만 라인 Y는 컴파일되지 않습니다. (버전 4.4.1) ++ g에서 오류 메시지는 다음과 같습니다이에서
foo.h:Y: error: expected initializer before 'vector'
나는 그때 나는 완전히 라인 X에서 같은 형식 정의 이름을 한정 (비 인라인 함수를 갖고 싶어한다는 수집 size_type
에는 아무런 문제가 없습니다.
그러나 적어도 제게는 X가 서투른 것처럼 보입니다.
대체 방법이 있습니까?
답변이 잘못되었습니다. –