首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在尝试调用默认构造函数时没有匹配的构造函数。

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

Stack Overflow用户
提问于 2016-12-20 00:04:51
回答 1查看 133关注 0票数 0

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

代码语言:javascript
运行
复制
 struct AutomatonNode {
    ...
    AutomatonNode();
    AutomatonNode(AutomatonNode &node);
    ...
};

默认构造函数具有以下实现:

代码语言:javascript
运行
复制
AutomatonNode::AutomatonNode() :
    suffixLink(-1),
    len(0) {};

但是,在编译过程中,我得到了以下错误:

没有用于初始化“SA::AutomatonNode”的匹配构造函数

在这种方法中:

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-20 00:09:31

此错误与默认构造函数无关。(是什么让你认为是这样的?)

这个问题很可能是由您的复制构造函数将其参数接受为非const引用造成的。(这是不可能确定的,因为您没有提供关于什么是nodes的信息。)如果nodes是一个标准容器,那么标准push_back接受它的参数作为对const的引用。此参数不能传递给复制构造函数。因此出现了错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41232950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档