自定义类型需要一个初始化程序来声明自动?

custom type requires an initializer to declare with auto?

我有这种类型:

  9 class Node {
 10         string name;
 11         int    dependencies;
 12         vector<Node*> children;
 13         unordered_map<string, Node*> map;
 14
 15
 16         public:
 17                 Node(string name) : name(name) {}
 18                 void decrementDependency() { dependencies--;}
 19                 void incrementDependency() { dependencies++;}
 20                 string getName() { return name; }
 21                 vector<Node*> getChildren() { return children; }
 22                 int getNumDependencies() { return dependencies; }
 23
 24                 void addDependent(Node* node) {
 25                         map[node->getName()] = node;
 26                         children.push_back(node);
 27                         node->incrementDependency();
 28                 }
 29 };

我正在尝试在基于范围的循环中遍历 vector<Node*>,如下所示:

 for (auto Node* node : children) {
      node->decrementDependency();
 }

但是,编译器给出了这个错误,error: declaration of variable 'Node' with type 'auto' requires an initializer

为什么会这样?是因为它是指向 Nodes 的指针向量吗?

使用 auto nodeNode* node,而不是 auto Node* node

for (Node* node : children) {
      node->decrementDependency();
}

for (auto node : children) {
      node->decrementDependency();
}