【发布时间】:2019-01-22 16:28:22
【问题描述】:
对于 kd-tree,我有一个 Node 类,如下所示:
template<typename DataType, unsigned int Dim>
struct Node
{
DataType* pos;
DataType payload;
struct Node<DataType, Dim>* left;
struct Node<DataType, Dim>* right;
};
我正在尝试设置一个元组类型,它将查询节点到找到的邻居的距离和邻居节点本身结合起来,如下所示:
using std::pair<float, Node<typename DataType, Dim>*> = QueryResult;
不幸的是,上面的代码给了我错误:
[...] 错误:模板参数的数量错误(1,应该是 2)
所以我尝试了几种不同的方法,遵循我在这里找到的一些线程。 首先,我想也许第二个参数应该在没有任何内容的情况下声明,而是在 Node 类中。
using std::pair<float, Node<DataType, Dim>*> = QueryResult;
[...] 错误:模板 ID 可能不会出现在 using 声明中
然后我试着告诉编译器它是一个嵌套模板;
using std::pair<float, template Node<typename DataType, Dim>*> = QueryResult;
[...] 错误:模板参数 2 无效
还有一个使用adaptor class 的解决方案,但这也不起作用。 我不确定如何设置我想要在这里做的事情。 任何帮助或指示将不胜感激。我不是超级精通模板编程,但我正在使用这个项目来增加我的知识。
谢谢!
【问题讨论】:
-
using [new alias' name] = [what it aliases];。你像typedef一样使用它。 -
您好,尤达大师!我冒昧地重新表述了您的问题,以便我们(凡人)更好地理解它 - 将节点定义放在首位,然后再提出问题。
-
不清楚你在这里做什么。
DataType预计来自哪里?
标签: c++ templates stl template-templates