Следующий пример - просто упрощенный скелет моего кода. Мой вопрос заключается в том, почему я не могу вызвать функцию-член шаблона из производного указателя. Насколько я понимаю, функцию-член базового класса обычно также можно вызывать из производного объекта или указателя.
class Base {
public:
template<typename T> T* data() {
static_cast<T *>(data(dtype));
}
virtual void data(DataType dtype) = 0;
};
class Derived1 : public Base {
public:
void data(DataType dtype) override { ... }
};
class Derived2 : public Base {
public:
void data(DataType dtype) override { ... }
};
int main() {
Base * base = new Derived1();
...
Derived1 * derived1 = dynamic_cast<Derived1 *>(base);
derived1->tempalte data<int>(); // Compiling error
...
}