У меня есть этот исходный код, который позволяет мне бросить Point<float>
в Point<double>
:C++ Cast Шаблон
template<class T> struct Point{
template <typename NewType> Point<NewType> cast() const{
return Point<NewType>();
}
};
int main(){
Point<float> p1;
Point<double> p2;
p2 = p1.cast<double>();
return 0;
}
Этот исходный код компилирует хорошо. Теперь я добавляю следующий класс и у меня есть ошибки компиляции на линии, которая делает бросок: ошибка
template <class T> struct PointContainer{
void test(){
Point<T> p1;
Point<double> p2;
p2 = p1.cast<double>(); //compilation error
}
};
компиляции: error: expected primary-expression before ‘double’
.
Почему я получаю эту ошибку и как ее решить?
Связанный: http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords?rq=1 ("* "template" keyword * ") – melpomene