下面的代码显然不应该编译(相当于将类定义为C { C myC }
,这将占用无限的内存)。问题是C ++如何实际进行检查?
class Node {
vector<Node> mChildren{ Node }
}
当我尝试编译时,出现以下错误。
trie.cpp:6:35: error: expected primary-expression before ‘}’ token
vector<Node> mChildren { Node };
^
trie.cpp:6:35: error: could not convert ‘{<expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<Node>’
是因为类Node尚未完全声明吗?为什么我可以将它用作向量的模板参数。
出现了类似的问题class C {
C myC;
};
答案 0 :(得分:1)
您Node
班有两个问题。你最后错过了一个分号,你在行尾有一个奇怪的{Node}
。修复它,它将编译。
class Node {
Node() {}
vector<Node> mChildren= { Node() };
};
编译好。