【发布时间】:2020-01-30 05:34:01
【问题描述】:
我的教授非常坚决地认为接口类不能被模板化。具体来说,纯虚函数的类不能有模板参数。更进一步,他说你不能做虚拟运营商。
这是他当时给我们展示的例子。
template <typename T>
class Array {
public:
virtual void fill(T t) = 0;
virtual T& operator[](size_t i) const = 0;
// ...
};
这段代码没有错吧?在 C++ 历史上是否曾经有过这样的点无法编译?我在作业中使用了这种精确形式的代码,它运行良好。
【问题讨论】:
-
据我所知,问题在于虚函数不能是模板。但是没有什么禁止模板类中的非模板虚函数(如您的示例中所示)。
-
@max66 感谢您的回复。教授建议让虚函数返回一个 int 或 void 并在调用站点进行类型转换。哎呀。他很惊讶我的代码能正常工作,因为它在过去从来没有为他工作过
标签: c++ templates operators pure-virtual