gpt4 book ai didi

c++ - 如何在 C++ 中的另一个模板类中使用模板类

转载 作者:行者123 更新时间:2023-11-30 03:27:50 26 4
gpt4 key购买 nike

#include <stdio.h>

template <class T>
class BTreeNode {
public:
BTreeNode(T d){data = d;};
private:
T data;
};

template <class T, template<class> class Node>
class BTree {
private:
Node<???> m_treeNodes; // I hope this type can be specified by the client,
// but I don't know how to write here
T m_data;
};


int main() {
BTree<int, BTreeNode<int> > tree;// I don't know how to write here
return 0;
}

如果我想让一个模板类有一个成员变量,我该怎么做 另一个模板类。或者如果我的设计有问题?谢谢

最佳答案

如果你想让客户端直接指定实例化,你可以只使用类型模板参数而不是模板模板参数,例如

template <class T, class Node>
class BTree {
private:
Node m_treeNodes; // use the type specified by client directly
T m_data;
};

然后

int main() {
BTree<int, BTreeNode<int> > tree; // specify the instantiation at client
return 0;
}

或者您可以添加另一个类型参数,并在类模板中确定实例化,这在某些情况下可能更灵活。

template <class T, template <typename> class Node, class X>
class BTree {
private:
Node<X> m_treeNodes; // determine the instantiation here
T m_data;
};

然后

int main() {
BTree<int, BTreeNode, int> tree; // specify the types at client
return 0;
}

关于c++ - 如何在 C++ 中的另一个模板类中使用模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47007767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com