繁体   English   中英

C ++中的模板继承(移植Java代码)

[英]Template inheritance in C++ (porting Java code)

我想将Java程序移植到在一个类中使用泛型的C ++。

public class Graph<T extends Node> {
  ...
}

几年前,我已经遇到了这个问题,无法解决,因为C ++在当时不支持此问题。 现在可以在C ++ 11中实现,还是有任何方法可以强制编译器检查泛型类型是否继承了基类Node?

template <typename T : public Node>
class Graph {
  ...
};

谢谢你的帮助!

是否有任何方法可以强制编译器检查泛型类型是否继承了基类Node?

您正在寻找std :: is_base_of 现在,要使其成为编译时检查,可以将其与static_assert一起使用。

我认为,是否强制T必须从Node派生是一个判断问题。 如果T实现了所有必需的方法以便Graph类得以编译,则我认为没有理由强制T必须从Node派生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM