c++ - 我们可以在模板参数中传递 self 一个默认参数吗?
问题描述
有没有办法将类本身作为默认值传递。
template<typename T, class NodeType>
class A: {
public:
virtual NodeType* foo() {}
};
template<typename T, class NodeType=B<T>>
class B: public A<T, NodeType> {
};
我正在为树制作一个通用节点。
BinaryTreeNode -> BSTNode -> AVLNode
解决方案
template<typename T, class NodeType>
class A {
public:
virtual NodeType* foo() {}
};
template<class T, class NodeType=void>
class B:
public A<T, typename std::conditional<std::is_same<NodeType,void>::value,B<T>,NodeType>::type>
{};
这里的诀窍是void
代表自我。当我们使用它时,我们只是有条件地交换B<T>
.
推荐阅读
- python - Dask 分布式:从 HDFS 读取 .csv
- python - 将字符串转换为 2D-numpy 数组中的浮点数
- wordpress - 在 Wordpress 中编辑 functions.php 文件;网站坏了
- django - 模型对象的字符串表示的许多数据库查询
- python - 如何让机器学习算法更快
- regex - 在 REGEX 中使用类内容
- javascript - Socket.emit() 和/或 socket.on() 不工作
- amazon-s3 - 因 S3 重定向而中断的站内链接
- java - 如何延迟 Java 代码直到另一部分代码完成?
- python - 在最后一个元音之后查找单词