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); |
会起作用。