여기에는 보호 된 멤버 변수를 사용하는 오래된 코드베이스가 있습니다. 이것이 좋은 아이디어인지 여부는 논의 될 수 있습니다. 그러나 코드는 gcc3으로 컴파일해야합니다. 나는 그렇게파생 클래스에서 클래스의 보호 된 멤버에 액세스
template <class Something> class Foo {
public:
// stuff...
protected:
some::type x;
}
template <class Something> Bar : Foo<Something> {
public:
void cleanup();
}
처럼 그리고 정리의 메소드 선언()이 수행
template <class Something> void Bar<Something>::cleanup() {
doSomeThingCleanUpLike (x);
}
X 함께 할 뭔가가에 클래스 템플릿 푸에서 멤버 X를 보호 사용하는 파생 된 템플릿 클래스 바있다 gcc4와 함께 작동하지 않아도 gcc4와 작동하지 않습니다. 변경하면 작동합니다.
doSomeThingCleanUpLike (this->x);
왜 그런가요?
"템플릿 클래스"라는 용어는 흔히 혼동의 원인입니다. 클래스의 템플릿이기 때문에 올바른 용어는 "클래스 템플릿"입니다. 그것은 수업이 아닙니다. 나는 당신의 질문을 편집 하겠지만 아마도 당신이 혼란스러워하는 이유 중 하나 일 것입니다. – MSalters
함수 정의에서 "정리"가 적합하지 않습니다. "Bar"에 대한 리턴 유형 및 템플리트 인수가 누락되었습니다. 물론 그것은 당신의 코드에 어떻게 있습니까? –
감사합니다. litb. 나는 그것을 바꿨다. 카페인 수준은 그것을 발견 할만큼 충분히 높지 않았습니다. "클래스 템플릿"으로 변경되었습니다. 템플릿 클래스 또는 클래스 템플릿이 문제에 영향을주지 않아야하는지 여부. 이 용어는 단지 비공식적으로 많이 사용됩니다. – GeeF