나는 문제에 직면하고 내가 포함 할 Mystackt의 공용 부분 내부의 전체 클래스를 반복자 클래스로 사용 MyIterator {}; 나는 그렇게 간단히 지금일부 헤더 파일에 대한 CPP 파일에 내 구현을 포함하는 방법 (중첩 된 클래스)
template <class Type> /* that's in file **MyTemplate.h** */
class MyStackt
{
friend somefunction (int,string,bool);
public:
class iterator
{
public:
iterator();
void somefunc(param1,param2.....);
void otherfunc(...);
private:
Type* ptr;
};
int public_func_of_stackt(void);
void an-otherfunc(int,string,Type,...etc);
private:
int x;
string y;Type* val;
};
나는 모든 구성원에 대한 코드를 포함 할 수의이 헤더 CPP 파일 MyTemplate.cpp 을 그가를 볼 수 있도록 다음과 같이 나타납니다 내 헤더 파일 MyTemplate.h 이 물건을 모두 썼다 예를 들어 문제 없이에 MyTemplate 클래스의 -functions : 내가 전체 클래스 (반복자 클래스)의 멤버-기능의 구현을 작성하려고 할 때
template <class Type>
int MyStack<Type>::public_func_of_stackt(void) /*this works perfect*/
{implementation goes here ...;}
을하지만 문제는
시작template <class Type>
bool MyStackt<Type>::iterator somefunc(param1,param2.....)
{ return current ==rhs.current; }
질문은 : 어떻게 Mytemplate.cpp 파일 안에 클래스 반복자의 멤버 함수에 대한 코드를 포함시킬 수 있습니까 ?? 어떻게 그 외부 :: :: 전체 또는 다른 특정 표기법을 사용하여 작성해야합니까? 다른 질문 : 어떻게 MyStackt 클래스의 friend 함수에 대한 구현을 (Mytemplate.cpp 파일에서) 작성할 수 있습니까 ??
갱신 # 1 : 당신
베리타스
감사하지만 난 또한 클래스의 일부 공공 기능을 정의하는 방법을 알 필요가 MyStackt 그 함수는 반복자 타입을 반환 (그래서 전체 클래스의 객체를 반환하는) 경우정의는
template <class Type>
iterator Stackt<Type>::begin()
{ return *this; } /*this function did not work*/
어쩌면 내가 일부 특정 표기 4 그것을 사용할 필요가 같을 것인가? 여러 개의 중첩 클래스가있는 경우에는 전문가의 답변을 기다리는 미리 감사하십시오!
내 편집을 확인하려면. – Veritas
템플릿 MyStackt 클래스와 iterator 클래스는 크기가 커서 생성자와 함수가 여러 개 있습니다. 내 코드를 분리 된 파일로 옮겼으므로 나중에 쉽게 유지 관리 할 수 있습니다. 반복자 객체를 반환하는 MyStackt의 함수 완벽하게 작동합니다. 당신이 을, 표준으로 내가 인라인 내부 MyStackt scope 특성 자신의 코드를 작성하지만 난 템플릿 반복자 Stackt :: 시작 CPP 및 .H 파일에이 코드를 이동하려고하면서 문제가 이러한 종류의 코드와 함께() {return * this; } 나는 MyStackt :: 반복자 표기법을 시도, 그것이 내가 구문 오류가 작동하지 않습니다 –
user3647977
는 :: 반복자가 : (시작) {...} –
Veritas