如果我有
template<class T>
TalkyBuffer& operator<<(T const &object) { // Template
...
}
TalkyBuffer& operator<<(TalkySerialisable const &object); // Override
Run Code Online (Sandbox Code Playgroud)
和一个班级
class A : public TalkySerialisable {
...}
Run Code Online (Sandbox Code Playgroud)
然后如果我表演
TalkyBuffer b;
A test;
b << test;
Run Code Online (Sandbox Code Playgroud)
然后gcc调用Template函数而不是Override函数
但是,如果我专门定义覆盖
TalkyBuffer& operator<<(A const &object); // Override without polymorphism
Run Code Online (Sandbox Code Playgroud)
然后gcc挑选那一个.是否有一种用抽象类覆盖模板化函数的实用方法?
我读过这篇文章,但它没有说明当你将多态性投入混合时会发生什么:http: //www.gotw.ca/publications/mill17.htm 此外我找不到解决方案,但也许我是使用错误的条款.