我有一个模板类,我想知道是否可以强制模板类类型实现某个接口(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/