Я получаю ошибку компилятора g ++ (ожидаемое первичное выражение до токена '>') в exportFoo :
class FOO {
...
template<typename DT, typename ST>
void foo(...);
...
};
template<typename DT, typename ST>
void
FOO::doFoo(...)
{
...
size_t memSize =
(dynamic_cast< FooImpl< DT > >(obj))->exportFoo< ST >(...);
...
}
Если заменить «DT» на действительный и известный тип данных,нет ошибки компилятора.Поэтому я предполагаю, что компилятор не интерпретирует универсальные типы данных DT и ST как допустимые параметры для приведения объекта "
" и вызова функции внутри функции.Судя по пробам и ошибкам, я использовал префикс приведения
FooImpl<typename DT>
, но он не запускается.У кого-нибудь есть подсказка?
Спасибо.