使用矢量资源句柄进行递归成员初始化

时间:2015-04-21 18:27:54

标签: c++ c++11 initialization member

下面的代码显然不应该编译(相当于将类定义为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;
};

1 个答案:

答案 0 :(得分:1)

Node班有两个问题。你最后错过了一个分号,你在行尾有一个奇怪的{Node}。修复它,它将编译。

class Node {
  Node() {}
  vector<Node> mChildren= { Node() };
};

编译好。