调用模板化基类方法编译失败

时间:2016-04-08 20:33:30

标签: c++ templates

我试图通过派生类调用模板化的基类方法。 这是我的代码

struct base
{
    template<typename t>
    void baseMethod(t s)
    {
        std::cout << s;
    }
};


struct der : public base
{
};


int main()
{
  der d;
  d.<int>(baseMethod(12));
}

编译失败并说明

  

main.cpp:在函数'int main()'中:main.cpp:25:5:错误:预期   '&lt;'之前的unqualified-id token d。(baseMethod(12));        ^ main.cpp:25:6:错误:在'int'd之前预期的primary-expression。(baseMethod(12));

有关如何修复它的任何建议吗?

1 个答案:

答案 0 :(得分:5)

尽管这个问题与继承无关,但正确的语法是

d.baseMethod<int>(12);

但是,由于template deduction:简单

,即使这样也不需要
d.baseMethod(12);

会起作用。