2011-02-09 6 views
1

다음 코드는 모듈에 있습니다.cpp의 템플릿

컨트롤러는 클래스의 이름입니다. allocate_route는 그것의 멤버 함수입니다.

UI 부호없는 정수이다

template<UI num_ip> 
void Controller<num_ip>::allocate_route() 
{ 
} 

로가 주어진 멤버 함수를 정의하지만. num_ip은 (는) 어디에도 정의되어 있지 않습니다. 그는 또한 코드 내부 어디서나 num_ip을 사용하지 않았습니다. 이 문장으로 컴파일러에게 무엇을 말합니까? 여기서 템플릿의 사용을 이해할 수 없습니다. Wat는이 코드를 어떻게 처리합니까?

답변

3

이 코드는 템플릿 클래스 Controller에 정의 된 allocate_route 함수를 구현합니다.

템플릿 클래스를 만들 때이 기능을 구현하는 두 가지 방법이 있습니다 어쩌면 그는이 방법 이외의 곳 num_ip을 사용

template <int a> 
class A 
{ 
    void x() { ... } 
}; 

또는

template <int a> 
class A 
{ 
    void x(); 
}; 

template <int a> 
void A<a>::x() 
{ 
} 
+0

감사합니다. @alessandro – CHID

+0

@CHID : 질문에 답을 표시하십시오 :-) – Loghorn

+0

예. 잊어 버렸습니다 :) – CHID

1

을하지만, 여전히 내부 Controller 클래스 (아마도 다른 방법).

템플릿 내에 메서드를 정의하면 메서드에서 템플릿 매개 변수를 사용하지 않아도 template<...>을 추가해야합니다. 따라서이 경우 다음과 같이하면 더 좋을 수 있습니다.

class Controller_base 
{ 
    void allocate_route(){ 
    } 
}; 

template<UI num_ip> 
class Controller: public Controller_base 
{ 
} 

void Controller_base::allocate_route() 
{ 
} 
+0

감사합니다 파블 – CHID

관련 문제