尝试调用默认构造函数时没有匹配的构造函数

时间:2016-12-20 00:04:52

标签: c++ class oop object constructor

在我的代码中,我有一个具有以下结构的类:

 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 LLVM版本7.3.0(clang-703.0.31)

目标:x86_64-apple-darwin15.3.0

线程模型:posix

1 个答案:

答案 0 :(得分:3)

该错误与默认构造函数无关。 (是什么让你认为它做到了?)

问题很可能是由您的复制构造函数接受其参数为非const 引用引起的。 (由于您未提供有关nodes的信息,因此无法确定。)如果nodes是标准容器,则标准push_back接受其参数作为const的引用。这样的参数不能传递给你的拷贝构造函数。因此错误。