首页 > 解决方案 > 在模板函数中使用模板参数

问题描述

我在 exportFoo< ST > 中得到一个 g++ 编译器错误(在 '>' 标记之前的预期主表达式):

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 解释为对象强制转换“< DT >”和函数内的函数调用的有效参数。通过尝试和错误,我为演员添加了前缀,FooImpl<typename DT>但它没有运行。有人有提示吗?

谢谢。

标签: c++templatescompiler-errorsg++

解决方案


推荐阅读