Я хотел бы определить шаблонный класс
CTest<T>
, в котором один из методов может вернуть объект типа
CTest<U>
с T, не обязательно равным U, какследующим образом:
template<typename T>
class CTest {
// Properties
private:
T Prop_1;
// Methods
public:
CTest::CTest (T);
CTest::~CTest ();
template<typename U>
CTest<U> Method_1 (U);
};
template<typename T>
CTest<T>::CTest (T _Prop_1) {
this->Prop_1 = _Prop_1;
}
template<typename T>
CTest<T>::~CTest () {
}
template<typename T, typename U>
CTest<U> CTest<T>::Method_1 (U _P) {
CTest<U> Result (_P);
return Result;
}
На самом деле, я также пытался определить Method_1 следующим образом:
template<typename T>
template<typename U>
CTest<U> CTest<T>::Method_1 (U _P) {
return CTest<U> (_P);
}
Я пытался использовать класс следующим образом:
int main () {
CTest<int> Test (1);
auto Test_2 = Test.Method_1<float> (2.0);
return 0;
}
Но я продолжаю получать ошибку во время компиляции "не удалось сопоставить функцию с существующим объявлением".Заранее благодарим за помощь.