我有以下代码,
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) {
^
如何正确声明节点指针 vector 的函数参数?
最佳答案
在
std::vector<node*> findValue(node * node, int value, std::vector<node*> parents)
node * node
重新定义标识符 node
作为一个变量。当编译器解析 std::vector<node*> parents
, node 不再是可以在模板扩展中使用的类型。
解决方案
重复使用名称时要小心。
std::vector<node*> findValue(node * notnode, int value, std::vector<node*> parents)
notnode
是解决问题的例子。强烈建议使用更具描述性的名称。
关于c++ - vector 模板参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42966028/