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
问候
您可以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在需要更灵活的情况下制作一个额外的模板参数)