2012-06-26 3 views
0

저는 Java 경험이 많지만 C++을 처음 사용했습니다.C++ - 여러 매개 변수 유형을 사용하는 메서드

간단한 예제가 집합체이며, set<int>set<bool>의 매개 변수를 사용할 수 있지만 다른 형식은 사용할 수 없습니다.

현재 메서드 이름이 오버로드되어 있지만 메서드 본문에 유사한 코드가 많이 포함되어 있습니다.

더 좋은 방법이 있습니까? 감사!

+0

왜 "다른 유형과 호환되지 않을"방법이 필요합니까? 'SetUnion '이 컴파일되면 정말 문제가됩니까? – MSalters

+0

표준 라이브러리에는 이미'std :: set_union '이 구현되어 있습니다. 인수가 * sets * (오히려 반복자)가 아니라는 것을 고려하면 처음에는 이상하게 보일 수 있지만 이는 좋은 생각입니다. –

답변

2

Function Template을 쓸 수 있습니다.
그러나 인수 유형에 관계없이 비슷한 작업을 수행하는 경우이를 수행 할 수 있습니다. 각 데이터 유형에 대해 다른 조작을 수행하는 경우, 기본적으로 사용자의 문제점으로 되돌아가는 템플리트 기능을 특수화해야합니다.

1
template <typename T> 
void func(const std::set<T> &param) 
{ 
    // your staff 
} 

//.... 

int main() 
{ 
    std::set<int> int_set; 
    std::set<bool> bool_set; 

    func(int_set); 
    func(bool_set); 
} 
+0

나는 OP 만'std :: set '와'std :: set '을 허용하고 싶어한다고 생각합니다. 그래서 약간의 추가 템플릿 마법이 필요합니다. – juanchopanza

관련 문제