У меня есть шаблон класса MyTemplate.Работает нормально.Но как только я создаю другой класс, производный от него, я получаю ошибки.
//main.cpp
template <typename T> class MyTemplate {
public:
T* test() {
return new T(this); //error here.
}
};
template <typename T> class MyTemplate2 : public MyTemplate<T> {
};
class MyClass {
public:
MyClass(MyTemplate2<MyClass>* source) {
}
};
int main() {
MyTemplate2<MyClass>().test();
return 0;
}
Я получаю ошибку: main.cpp|4|error: invalid conversion from 'MyTemplate<MyClass>* const' to 'MyTemplate2<MyClass>*'
Как я понимаю, ошибка "this"в MyTemplate имеет тип MyTemplate.Но я хочу, чтобы это был MyTemplate2.Я могу сделать явное приведение, но это требует передачи второго аргумента классу шаблона, и, похоже, для этого должно быть лучшее решение.Есть ли?