如何在C++中实现MyClass <T extends OtherClass>?

501*_*ted 1 c++ java generics templates extends

谁能告诉我如何在C++中实现这个Java代码?

  public class MyClass<T extends OtherClass>{
    ....
  }
Run Code Online (Sandbox Code Playgroud)

我用C++测试了这个:

 template<class T, class OtherClass>
 class MyClass
 {
    public:
          MyClass();
  }
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:invalid use of template-name 'MyClass' without an argument list

问候

Dan*_*rey 6

您可以std::is_base_of结合使用static_assert:

template<class T>
class MyClass
{
    static_assert( std::is_base_of< OtherClass, T >::value, "T does not extend OtherClass");

public:
    MyClass();
};
Run Code Online (Sandbox Code Playgroud)

(当然,您也可以OtherClass在需要更灵活的情况下制作一个额外的模板参数)