0
죄송합니다. 오랜 질문이지만 죄송합니다. 특정 문제입니다. 템플릿의 클래스에서 유형 가져 오기
의 나는 두 개의 클래스,type1
및
type2
있다고 가정 해 봅시다 : 당신이 볼 수 있듯이 그들은
getVal()
에 의해 반환 유형을 제외하고 동일한 기능을 수행
struct type1 {
int getVal() {
return int();
}
};
struct type2 {
float getVal() {
return float();
}
};
합니다. 자, type1
또는 type2
을 입력으로 받아들이고 각각 int
및 float
인 std::vector
을 출력하는 함수를 만들고 싶다고 가정 해 보겠습니다.
내가 이런 템플릿 기능을 만드는 것이 었습니다 할 생각 방법 :
template<class T> vector<oh dear> something(T input) {
return {input.getVal(),input.getVal()};
}
이 거의 작동을하지만, 당신이 oh dear
에서 볼 수 있듯이, 내가 벡터의 올바른 유형을 만들 수 없습니다 돌려 주다. 유형은처럼 type1
및 type2
클래스에서 반환 단순히 typedef에 : 그래서 그에 대한 해결책을 생각
struct type1 {
int getVal() {
return int();
}
typedef int subtype;
};
struct type2 {
float getVal() {
return float();
}
typedef float subtype;
};
그리고이 할 수있는 기능 변경 :
template<class T> vector<T::subtype> something(T input) {
return {input.getVal(),input.getVal()};
}
하는 컴파일되지 않습니다 . 내가 가지고있는 문제를 해결할 방법이 있습니까?
그래서'typename' 키워드가 무엇을위한 것입니까! 그리고 그것은'decltype'을위한 것입니다! 나는 당신을 사랑하고, 자동차가 반환 유형이 될 수 없다는 것을 결코 알지 못했다. 나는 ♥ C++ 11을 너무 많이, 고마워! 최고의 해답. – BWG