0
私はこのタイプがあります。カスタムタイプでは、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
、このエラーが発生します。
どうしてですか?それはNode
sへのポインタのベクトルだからですか?
それを得た - 感謝を! –
@LeibnizMan、あなたは大歓迎です。ハッピープログラミング! –
「子」はポインタのコンテナであることをより良く知らせるために、 'auto * node'を使うことを提案します – Zereges