相关疑难解决方法(0)

使用多态函数覆盖模板化函数

如果我有

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 此外我找不到解决方案,但也许我是使用错误的条款.

c++ polymorphism templates template-specialization

5
推荐指数
1
解决办法
532
查看次数