c++ - vector 模板参数无效

标签 c++

我有以下代码,

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/

相关文章:

c++ - scipy.signla.filtfilt 在 C++ 中的实现?

c++ - 将指向成员的指针强制转换为大多数派生类型

c++ - 在容器中查找派生对象

c++ - 使用 OpenCV 计算物体的面积

c++ - 如何反转 xml 树中的遍历节点,特别是 libxml/c++

c++ - 如何在不使用 malloc 或 new 运算符的情况下分配内存空间?

c++ - 汇编如何做参数传递: by value,引用,不同类型/数组的指针?

c++ - 创建具有受限属性的类型

C++ 公共(public)变量作用域混淆

c++ - std::vector 元素的破坏顺序