关于c ++:调用模板化的基类方法编译失败

Calling a templated base class method compile fails

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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: In function 'int main()': main.cpp:25:5: error: expected
unqualified-id before '<' token d.(baseMethod(12)); ^ main.cpp:25:6: error: expected primary-expression before 'int' d.(baseMethod(12));

有什么关于如何修复它的建议吗?


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

1
d.baseMethod<int>(12);

但是,由于模板扣除,甚至不需要这样做:简单

1
d.baseMethod(12);

会起作用。