在我的代码中,我有一个具有以下结构的类:
struct AutomatonNode {
...
AutomatonNode();
AutomatonNode(AutomatonNode &node);
...
};
默认构造函数具有以下实现:
AutomatonNode::AutomatonNode() :
suffixLink(-1),
len(0) {};
但是,在编译过程中,我得到了以下错误:
没有用于初始化“SA::AutomatonNode”的匹配构造函数
在这种方法中:
size_t SuffixAutomaton::newState() {
AutomatonNode node;
nodes.push_back(node);
return nodes.size() - 1;
}
在我看来非常奇怪,因为一切都已经就绪,构造函数是公共的(它是一个结构,默认情况下所有字段都是公共的)。有什么想法吗?
进行清关:
Apple版本7.3.0 (clang-703.0.31)
目标: x86_64-apple-darwin15.3.0
线程模型: posix
发布于 2016-12-20 00:09:31
此错误与默认构造函数无关。(是什么让你认为是这样的?)
这个问题很可能是由您的复制构造函数将其参数接受为非const引用造成的。(这是不可能确定的,因为您没有提供关于什么是nodes
的信息。)如果nodes
是一个标准容器,那么标准push_back
接受它的参数作为对const的引用。此参数不能传递给复制构造函数。因此出现了错误。
https://stackoverflow.com/questions/41232950
复制相似问题