[英]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.