我有以下代码,
typedef struct node
{
int data;
node * left;
node * right;
}node;
#include <vector>
std::vector<node*> findValue(node * node, int value, std::vector<node*> parents) {...}
但是我收到了编译错误:
错误:模板参数1无效
std::vector<node*> findValue(node * node, int value, std::vector<node*> parents) {
^
如何正确声明节点指针向量的函数参数?
答案 0 :(得分:3)
在
std::vector<node*> findValue(node * node, int value, std::vector<node*> parents)
node * node
将标识符node
重新定义为变量。当编译器解析std::vector<node*> parents
时,节点不再是可以在模板扩展中使用的类型。
重复使用名称时要小心。
std::vector<node*> findValue(node * notnode, int value, std::vector<node*> parents)
notnode
是解决问题的一个例子。强烈建议使用更具描述性的名称。