1 c++ java inheritance templates c++11
我想将Java程序移植到C++,它在一个类中使用泛型.
public class Graph<T extends Node> {
...
}
Run Code Online (Sandbox Code Playgroud)
几年前我已经解决了这个问题并无法解决它,因为C++在那些日子里不支持这个.现在可以在C++ 11中使用,还是有任何方法可以强制编译器检查泛型类型是否继承了基类节点?
template <typename T : public Node>
class Graph {
...
};
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
是否有任何方法强制编译器检查泛型类型是否继承了基类节点?
您正在寻找std :: is_base_of.现在,为了使它成为编译时检查,您可以将它与static_assert一起使用.
在我看来,判断是否强制执行T必须来源于判断Node.如果T实现了所有必要的方法以便Graph类编译,我认为没有理由强制执行T必须从中派生Node.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |