C++:Enforcing模板类型实现了一个方法

Aly*_*Aly 4 c++ templates interface

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

public class Tree<T implements IComparable>{
    public Tree(Vector<T> x){...}
}
Run Code Online (Sandbox Code Playgroud)

C++的替代品是什么?

Pup*_*ppy 5

只需编写代码就可以了.如果没有,则在用户传入不合格类型时将无法编译.这里不需要明确的功能.但是为什么你真的需要像IComparable这样的接口呢?模板是鸭子类型.

但模板错误可能会变得令人讨厌.您可以使用类型特征和静态断言来简化这一过程.但是,标准没有提供这样的特性,所以你必须用SFINAE写一个.

  • @DeadMG:非常正确.但这是一个不同的问题.问题是如何强制执行模板参数实现接口.有充分的理由能够做到这一点(假设您不能在一天内编写整个应用程序). (3认同)