C++:强制模板类型实现一个方法

标签 c++ templates interface

我有一个模板类,我想知道是否可以强制模板类类型实现某个接口(interface),特别是我想强制该类型重载 operator= 方法.在 Java 中我会写:

public class Tree<T implements IComparable>{
    public Tree(Vector<T> x){...}
}

C++ 中的替代方案是什么?

最佳答案

假设它确实如此,只需编写代码即可。否则,当用户传入不符合的类型时,它将无法编译。这里不需要明确的特征。但是为什么你会为此需要像 IComparable 这样的接口(interface)呢?模板是鸭子类型的。

但是模板错误可能会变得很糟糕。您可以使用类型特征和静态断言来简化此过程。但是,标准不提供这样的特征,因此您必须使用 SFINAE 编写一个。

关于C++:强制模板类型实现一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12933634/

相关文章:

c++ - Mixin和接口(interface)实现

c++ - 获取 Qt 应用程序输出到 Qwidget C++

c++ - c++11 新功能,正确使用 shared_ptr?

ruby-on-rails - rails : render partial with selected controller and action in view

c++ - 让模板函数通过函数参数选择类型

generics - F# ICastableTo<'T> 等效吗?

Python 设计指南 :

c++ - 使用或不使用指针制作数据成员对象

c++ - constexpr operator++(int) (post-increment) 是否有任何应用

python - Cython:python 类包装器中的模板