我有一个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;
不幸的是,上面的代码给我带来了错误:
[...] 错误:模板参数数量错误(应为2个,实际为1个)
于是我尝试了一些不同的方法,遵循我在这里找到的一些主题。 首先,我认为第二个参数可能应该在Node类内部声明而没有任何东西。
using std::pair<float, Node<DataType, Dim>*> = QueryResult;
[...] 错误:using-声明中不能出现模板ID
然后我尝试告诉编译器它是一个嵌套的模板;
using std::pair<float, template Node<typename DataType, Dim>*> = QueryResult;
[...] 错误:无效的模板参数2
还有一种解决方法使用了一个适配器类(adaptor class),但它也没有起作用。 我不确定我应该如何设置我在这里尝试做的事情。 任何帮助或指针将不胜感激。我对模板编程并不是很精通,但正在使用这个项目来增加我的知识。
谢谢!
using [新别名名称] = [被别名的内容];
来实现别名,类似于typedef
。 - François AndrieuxDataType
应该从哪里来? - SergeyA