2017-05-15 7 views
0

하나의 매개 변수 T를 사용하는 MATRIX라는 템플릿 클래스가 있습니다. MATRIX를 사용하고 T 값의 출력을 반환하는 함수를 작성하고 싶습니다. MATRIX는 구현시 T를 elem_type으로 typedef합니다. 이 일에 내 최초의 시도였다템플릿 템플릿 매개 변수, 내부 매개 변수가 고정되어 있지 않습니다.

template<template<typename> class MATRIX> 
class MyClass 
{ 
... 
    MATRIX<>::elem_type myfun(const MATRIX<>& m1); 
} 

이 MATRIX 오류 "템플릿 템플릿 매개 변수에 대한 인수 목록"결과가 "없습니다", 감각 그것을보고하게한다. 문제는 내가 거기에 무엇을 넣을지 전혀 모른다는 것입니다. 예를 들어 플로트를 지정할 수는 있지만이 함수는 MATRIX의 매개 변수가 float, double, uint_16 또는 그 밖의 다른 요소와 상관없이 작동하도록하고 싶습니다. MATRIX의 가능한 모든 매개 변수를 구체적으로 열거하지 않고이 작업을 수행 할 수 있습니까?

+1

에 오신 것을 환영합니다 스택 오버플로 할 수 있습니다. [The Tour] (http://stackoverflow.com/tour)를 읽으신 후 [Help Center] (http://stackoverflow.com/help/asking)의 자료를 참조하십시오. 여기에 물어보십시오. –

답변

1

이 문제를 해결하는 가장 쉬운 방법은 MyClass이 단일 템플릿 매개 변수를 가져 와서 MATRIX에 명시 적으로 적용하는 것입니다.

live example on wandbox

+0

명확히 해주셔서 감사합니다. 완드 박스 예제가 특히 유용했습니다. –

1

템플릿 템플릿 매개 변수가 때, 템플릿 템플릿 매개 변수를 인스턴스화하는 데 사용할 수있는 다른 템플릿 인수를 제공 할 필요가

template <typename> 
class MyClass; 

template <template <typename> class MATRIX, typename T> 
class MyClass<MATRIX<T>> 
{ 
    // ... 
    typename MATRIX<T>::elem_type myfun(const MATRIX<T>& m1); 
}; 
.

template<template<typename> class MATRIX, typename ElemenType> 
class MyClass 
{ 
} 

그렇다면, 당신은 사용할 수 있습니다

template<template<typename> class MATRIX, typename ElemenType> 
class MyClass 
{ 
    typename MATRIX<ElementType>::elem_type myfun(const MATRIX<>& m1); 
}