Foo f = Foo(); // 没有匹配的函数来调用 'Foo::Foo(Foo)' ... 嗯?

2024-04-14

class Foo
{
public:
    explicit Foo() {}
    explicit Foo(Foo&) {}
};

Foo d = Foo();

错误:没有匹配的函数可用于调用“Foo::Foo(Foo)”

我尝试改变Foo(Foo&) to Foo(Foo)正如错误所示,据我所知,这不是一个有效的构造函数,果然我得到了:

错误:构造函数无效;你的意思可能是“Foo (const Foo&)”

是什么赋予了?我该如何解决这个问题? (顺便说一句,这是在 GCC 上)


复制构造函数中有两个有问题的东西。

首先,您已经明确了复制构造函数(这是一件值得怀疑的事情),所以您(理论上)需要这样做:

Foo d( (Foo()) );

其次,您的复制构造函数采用引用而不是const参考,这意味着您不能将其与临时对象一起使用Foo.

就我个人而言,我只是删除explicit从复制构造函数并使其采取const可以的话参考一下。

请注意,explicit对你的默认构造函数没有影响。[*]explicit仅对可以使用单个参数调用的构造函数有效。它防止它们被用于隐式转换。对于仅采用零个或仅两个或更多参数的构造函数,它没有任何效果。

[注意:以下之间可能存在差异:

Foo d;

and

Foo d = Foo();

但在这种情况下,您有一个用户声明的默认构造函数,因此这不适用。]

Edit:[*] 我刚刚仔细检查过这一点,12.3.1 [class.conv.ctor] 说你可以创建一个默认构造函数explicit。在这种情况下,构造函数将用于执行默认初始化 or 值初始化。老实说,我不明白 this 的值,因为如果你有一个用户声明的构造函数,那么它是一个非 POD 类型,甚至非 POD 类型的本地对象如果没有初始化程序,也会默认初始化该条款说可以通过explicit默认构造函数。也许有人可以指出一个极端的情况,它确实会产生影响,但现在我不知道有什么影响explicit有一个默认构造函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Foo f = Foo(); // 没有匹配的函数来调用 'Foo::Foo(Foo)' ... 嗯? 的相关文章

  • clang-tidy - 忽略第三方标头代码

    我正在为我的项目使用 CMake 并且我想向项目引入 clang tidy 检查 我用于此目的CMAKE CXX CLANG TIDY and clang tidy用于检查设置的文件 我想在 CI 中使用警告作为错误来可靠地检查提交是否引入
  • 这个洗牌算法有什么问题吗?

    我一直在做一些休闲假期计算 我的迷你项目是模拟意大利游戏 tomboli 一个关键的组成部分是对以下过程的模拟 游戏由一名男子控制 他拿着一袋 90 个弹珠 编号为 1 到 90 他从袋中随机取出一颗弹珠 每次向玩家喊出弹珠编号 经过一番思
  • CRTP 能否完全取代小型设计的虚拟功能?

    Is CRTP http en wikipedia org wiki Curiously recurring template pattern有足够的能力智胜virtual功能齐全 我认为 CRTP 的唯一缺点是为每个重复模式生成大量代码
  • float.Parse 不再在 Unity 中工作 (C#)

    我有一个包含以下代码行的工作项目 public InputField mass float val float Parse mass text 非常简单 用户输入一定量的质量 然后将其从文本解析为浮动 几天前这工作得很好 我什至能够多次导出
  • 如何测试 PARTIAL 视图在 C# ASP .NET MVC 中呈现

    我有一个视图 它内部有部分视图渲染 div class partialViewDiv Html RenderPartial partial Model SomeModelProperty div 和一个返回此视图的控制器 public Ac
  • 类模板的可变参数构造函数模板的特化

    这是一个带有可变参数构造函数的类 它专门用于从临时对象进行复制和移动 template
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • 如何找到 QDockWidget 标题栏的高度?

    我正在尝试找到 a 的高度QDockWidget标题栏 以便对自定义布局进行一些智能调整大小 但标题栏不是单独的小部件 它内置于停靠小部件的私有布局中 并且没有成员可以访问它 还有其他方法可以找到它的高度吗 是的 您可以使用以下命令找到标题
  • 我应该在查询时调用 ToListAsync()

    不久前 我开始接触 C 并正在寻找一些如何编写代码的最佳实践 现在 我正在使用 EF Core 并具有以下代码 var details dbContext Details Where x gt x Name Button foreach v
  • 策略模式的现实示例

    我一直在读关于OCP原理 http en wikipedia org wiki Open closed principle以及如何使用策略模式来实现这一目标 我打算尝试向几个人解释这一点 但我能想到的唯一例子是根据 订单 的状态使用不同的验
  • 在 Winforms 中,PreviewKeyDown() 从未针对任何键触发

    我最初试图让我的程序获取箭头键 上 下 左 右 的输入 但发现在 KeyDown 中这些键从未出现过 后来我发现我可以通过进入 PreviewKeyDown 函数并设置来启用箭头键 e IsInputKey true 及其周围的任何条件和逻
  • 如何将焦点设置到 Windows 窗体应用程序中的控件?

    在 Windows 窗体应用程序中 when我是否编写代码以在应用程序启动时以及随后调用函数后将焦点设置到控件 例如 如果我有一个 DropDownList 一个 TextBox 和四个按钮 并且我希望将 Focus 设置为 DropDow
  • gcc总是做这种优化吗? (公共子表达式消除)

    作为示例 假设表达式sys gt pot atoms item gt P kind mass在循环内求值 循环只改变item 因此表达式可以简化为atoms item gt P kind mass通过将变量定义为atoms sys gt p
  • invoke_result获取模板成员函数的返回类型

    如何获取模板成员函数的结果类型 下面的最小示例说明了该问题 include
  • 从 WMI 运行 exe 时的网络身份验证

    我有一个 C exe 需要使用 WMI 运行并访问网络共享 但是 当我访问共享时 我收到 UnauthorizedAccessException 如果我直接运行 exe 则可以访问共享 我在这两种情况下都使用相同的用户帐户 我的应用程序有两
  • 带有 epgm 的 ZeroMQ PUB/SUB 无法接收同一主机上进程发送的消息

    我的所有进程都有两个套接字 一个 PUB 和一个 SUB 并且它们都使用相同的多播地址和端口 例如 PUB 会这样做 绑定 epgm 239 192 1 1 5555 SUB 将执行以下操作 连接 epgm 239 192 1 1 5555
  • SoapHttpClientProtocol:以流而不是字符串的形式获取响应?

    我正在使用一种网络服务 它可以一次性输出大量数据 响应字符串可能约为 8MB 虽然在台式电脑上这不是问题 但嵌入式设备在处理 8MB 字符串对象时会发疯 我想知道是否有办法以流的形式获取响应 目前我正在使用如下方法 我尝试使用 POST 请
  • 使用 STL 迭代器而不初始化它

    我想做这样的事情 container iterator it NULL switch eSomeEnum case Container1 it vecContainer1 begin break case Container2 it vec
  • 有没有 C# 到 C 的转换工具? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道 C 与 NET Framework 不同 C 是一种符合 ECMA ECMA 334 和 ISO
  • C++ 中的 Ofstream 数组

    我想要在我的项目中使用 41 个输出文件来在其上写入文本 首先创建一个字符串数组list为了命名这些输出文件 然后我尝试定义一个 ofstream 对象数组并使用list命名它们 但我收到此错误 outfile cannot be used

随机推荐

  • 安装ADT插件后,不出现欢迎使用Android开发

    使用 ADT 插件安装 Eclipse 后我陷入困境 完成所有步骤后 它应该显示 欢迎来到 android 开发 但我只看到 Java 开发 我的设置如下 Java JDK 6 日食朱诺 SR1 Android SDK 4 1 所有默认包和
  • 如何让 docker 工具箱与 .net core 2.0 项目一起使用

    我尝试在 NET core 2 0 项目中使用 Docker 功能时遇到错误 我收到一条错误消息 Visual Studio 容器工具需要先运行 Docker 构建 调试或运行容器化项目 欲了解更多信息 请参见 http aka ms Do
  • Rxjava - 链接可观察量时如何获取其他类型的流(返回值)而不是当前的流?

    我执行了一个 Retrofit2 observable 调用 在完成后它立即链接到另一个 observable 以将结果存储到数据库中 它看起来很简单 如下所示 protected Observable
  • 设置字符串中某个字符的样式

    我想通过 jQuery 设置字符串中某个字符的样式 但不知道如何实现 我有以下情况 a href Link a 我自己的方法是 a accesskey each selects only those a elements with an a
  • Laravel 中的渴望加载约束过滤器问题

    我无法过滤内容groups表关于username in users表使用急切负载约束 http laravel com docs 4 2 eloquent eager loading public function username ret
  • Jenkins CLI 连接被拒绝

    执行时 java jar jenkins cli jar s https jenkins url help 由于某种原因我的连接被拒绝 Jenkins版本是1580 3 用户拥有Jenkins服务器的权限 cli jar是最新的并且ssh公
  • SQL INNER JOINing 2 子查询

    我试图将这两个子查询 我认为这就是它的名字 内部联接在一起 其中第一个查询的branchName等于第二个查询的branchName 然而 他们似乎并不想联合起来 而且以我有限的 SQL 知识 我似乎找不到解决这个问题的方法 我尝试将括号移
  • Tegra 平板电脑上的 NDK 调试

    今天 我购买了用于本机开发的 Android 平板电脑 采用 Tegra 的 Acer Iconina Tab A500 Honeycomb 3 1 然后我从以下位置下载并安装了 Tegra Android Development Pack
  • Google Cloud Text To Speech API 快速入门示例

    我是这个论坛的新手 我正在尝试让 Google Cloud TTS API 正常工作 但遇到了一些问题 页面是 https cloud google com text to speech docs quickstart protocol h
  • SolrCloud:无法创建集合、锁定问题

    我一直在尝试实现 SolrCloud 一切正常 直到我尝试创建包含 6 个分片的集合 我的设置如下 5 个虚拟服务器 全部运行 Ubuntu 14 04 由一家公司跨不同数据中心托管 为整体运行 ZooKeeper 3 4 6 的 3 台服
  • C# 清除ListView中的所有项目

    我尝试清除列表视图 但清除方法不起作用 myListView Items Clear 这是行不通的 当我在这一行放置断点时 该行将被执行 但我的列表视图不为空 怎么会 我通过将列表视图的数据源设置为数据表来填充列表视图 我现在的解决方案是将
  • 如何在 Symfony4 中将用户添加到 Sentry 以应对所有异常?

    我将 Sentry 添加到我的项目中 但它不会添加某些事件的当前登录用户 我添加了一个事件订阅者 但我不确定我是否真的需要它 对于像 ArgumentCountError 这样的例外情况 一切正常 对于 NotFoundHttpExcept
  • 构建上周、本周和下周的日期数组

    我经常被 Python 中日期的问题绊倒 在我的网络应用程序中 我想显示日历三周的每一天 上周 本周和下周 星期一表示一周的开始 我目前处理这个问题的方法是向后退一步直到星期一 然后再减去 7 天 然后添加 20 天来构建三周范围 但这感觉
  • SwiftUI 中的重复工具栏

    我将工具栏添加到 2 个文本字段 但工具栏显示了两次 这是我的自定义文本字段的代码 public struct SUIDecimalField View public var body some View TextField placeho
  • 在 Google Cloud 中设置网站? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我完全迷失在这之中 我习惯于使用带有 cpanel 的简单 Web 主机来制作网站 只需使用 filezilla 登录并上传我的 ht
  • 如何在 MAC OS X 中获得最大 TCP 接收/发送窗口?

    如何在 MAC OS X 中获得最大 TCP 接收 发送窗口 Linux中有两个ctl proc sys net core rmem max 最大 TCP 接收窗口 NET CORE RMEM MAX proc sys net core w
  • 如何在Android应用程序中读取xlsx文件?

    我知道 stackoverflow 上有很多相同的问题 但似乎我看不到任何可能的解决方案来读取 xlsx 的内容 我尝试过的 我尝试将整个 Apache POI 库放入 Android 应用程序中 并尝试读取 xlsx 文件 然而 问题是
  • Authlogic 中会话模型的自定义验证消息

    在 Authlogic 的会话模型中覆盖登录 密码验证消息的最佳方法是什么 在用户模型中 Authlogic 提供了 merge 方法来覆盖验证选项 但 Session 没有类似的东西 有什么建议么 Authlogic有它自己的国际化等级
  • 覆盖嵌套控件中的隐式样式

    我的应用程序中有一个资源字典 其中它们是为 textblock 定义的通用样式 该字典与 app xaml 合并 现在我有一个要求 我需要在对话框窗口中更改 tabitem 的样式并基于几个触发器设置前景 我已经定义了自己的文本块样式并为
  • Foo f = Foo(); // 没有匹配的函数来调用 'Foo::Foo(Foo)' ... 嗯?

    class Foo public explicit Foo explicit Foo Foo Foo d Foo 错误 没有匹配的函数可用于调用 Foo Foo Foo 我尝试改变Foo Foo to Foo Foo 正如错误所示 据我所知