没有已知的从指针到引用到指针的转换

2024-03-24

我遇到以下 g++ 错误

Menu.hpp:66:41: error: no matching function for call to ‘Menu::Stack<Submenu*>::push(Submenu*)’
Menu.hpp:66:41: note: candidate is:
Menu.hpp:14:21: note: void Menu::Stack<T>::push(T&) [with T = Submenu*]
Menu.hpp:14:21: note:   no known conversion for argument 1 from ‘Submenu*’ to ‘Submenu*&’

这样的转变怎么可能不可能呢?编译器在什么情况下会发出此类错误?

至于我实际上在做什么:

  • 我有一堂课 子菜单
  • 我有一个继承自子菜单的菜单类
  • 菜单有附加的类型字段Stack<Submenu*>哪个映射记住打开的子菜单
  • Menu 的所有方法,如“打开菜单”、“单击菜单项”等都引用当前位于堆栈 top() 的子菜单。在子菜单类中,它们对对象本身进行操作。
  • 菜单有一个关闭当前子菜单并向上移动的公共方法 - 即从堆栈中弹出子菜单。
  • 菜单可以弹出,直到到达自身为止,请参阅下文,这是什么意思。

现在是最有可能出现问题的部分,即 Menu 的构造函数:

Menu() { stack.push( (Submenu*)this ); }

这样做是因为当所有菜单都关闭时,与 stack.top() 相关的方法应该引用菜单本身,也是一种子菜单(因为它继承自它)。

EDIT:

我制作了自己的类 Stack,而不是使用 std::stack (正如我最初建议的那样),并且正如答案中指出的那样,问题就在那里。请原谅我的不准确。


通常,您只能将左值转换为引用,而不能将右值转换为右值(强制转换是右值)。您可以将右值转换为const参考文献,这可能是你真正想要的——如果你改变的话Stack::push采取const T &论证而不是T &,错误就会消失。

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

没有已知的从指针到引用到指针的转换 的相关文章

随机推荐

  • Laravel 5 和 Eloquent 数据库中两个日期之间的关系

    我是 Laravel 5 的初学者 我有一个表 用户 其中包含 CreateDate Type 和 Channel 列 我有一个用户列表 我在视图中选择 Trans StartDate Trans EndDate Type 和 Channe
  • 熄灯 - 寻找最差的初始状态

    我有一个围绕一个小游戏的任务 叫做熄灯 https en wikipedia org wiki Lights Out game Game 该游戏由尺寸为 3x3 的棋盘组成 其中每个单元格可以为 1 或 0 例如 0 1 0 1 1 0 0
  • HTTP 标头 If-None-Match: * 是什么意思?

    以下 HTTP 1 1 标头是什么意思 如果无匹配 当使用强或弱 ETag 甚至 ETag 列表时我理解它 但我不明白它在使用星号 时的用途 Edit 最好有一些伪代码 PHP 代码也很好 来显示如何 什么回答 If None Match
  • 用于 jquery 数据表服务器端处理的 Spinner

    我有一个带有服务器端处理的 jquery 数据表版本 1 10 一切正常 然而 我的要求是为每个 ajax 调用显示一个微调器 而不是默认的 正在处理 消息 尝试了多种方法但没有任何作用 这是我的代码 table pp DataTable
  • 如何创建一个预先填写“说明”的 HTML 表单,当用户单击该框时,该说明会清晰可见?

    我有一个 HTML 表单 如下所示
  • 更改 DecimalFormat 区域设置

    我有定制DecimalFormat在 Edittext 的 addTextChangedListener 方法中 一切工作正常 但是当我更改语言 区域设置 时 我的 addTextChangedListener 不起作用 double an
  • 如何等待异步函数?

    My case let waiting function return new Promise resolve gt console log awaiting setTimeout function resolve 1000 let wai
  • Clang 可以使用 GCC 编译的 .a 库来编译代码吗?

    我的项目目前在 gcc 下编译 它使用Boost ZeroMQ作为静态 a图书馆和一些 so像 SDL 这样的库 我想一路叮当响 但不是现在 我想知道是否可以编译使用的代码 a and so在 gcc 下用 clang 编译的库 是的 就是
  • 如何从 Node.js 打开终端应用程序?

    我希望能够打开Vim从终端中运行的node js程序中 创建一些内容 保存并退出Vim 然后抓取文件的内容 我正在尝试做这样的事情 filename tmp tmpfile process pid editor process env ED
  • 动态将 RewriteBase 设置为当前文件夹路径

    有没有办法将 RewriteBase 设置为相对于主机根目录的当前文件夹 htaccess 文件所在的文件夹 的路径 我有一个 CMS 如果我将其移动到主机中的目录 它将无法工作 除非我将 RewriteBase 设置为相对于主机根目录的目
  • 具有不同行布局的游标适配器

    我正在尝试创建一个自定义光标适配器 它将根据光标中的某些数据使用两种不同的布局 我一直在阅读 重写 getViewTypeCount 和 getItemViewType 来实现这一点 但我似乎不知道如何实现这一点 这是我的 bindView
  • 在 pandas 数据帧中插入多索引

    我需要插入多索引数据帧 例如 这是主要数据框 a b c result 1 1 1 6 1 1 2 9 1 2 1 8 1 2 2 11 2 1 1 7 2 1 2 10 2 2 1 9 2 2 2 12 我需要找到以下结果 1 3 1 7
  • 缺少 Ionic 网络本机插件的提供程序

    我尝试过使用 Ionics 本机插件 Network 但由于据称缺少提供程序而失败 为了避免任何错误 我全新安装了 Ionic 和所需的依赖项 ionic cordova plugin add cordova plugin network
  • Glassfish 3.1.2 和 Eclipse

    我刚刚下载了 Glassfish 版本 3 1 2 这还不是正式版本 我需要这个版本 因为我的 Web 应用程序正在使用 websockets 我现在遇到的问题是 Eclipse 的 Glassfish 插件 他无法识别新的 Glassfi
  • 什么可能导致作业无法完成?

    我正在使用 C 开发一个项目 由于某种原因 当我尝试为枚举变量赋值时 分配不会发生 我会复制我的代码 但这实际上只是一个简单的作业 它是这样的 testVar MyEnum TYPE OF ENUM where testVar属于类型MyE
  • Scrapy从div中获取href

    我开始在一个小项目中使用Scrapy 但无法提取链接 每次找到该类时 我只得到 而不是 url 我错过了一些明显的东西吗 sel Selector response for entry in sel xpath div class reci
  • 如何根据

    所以我想做的是根据 div 元素的高度更改它的颜色 例如 如果 div 的高度 我只想使用 css 来实现这一点 如果可能的话 这是一个你可以信赖的渐变背景技巧background size并重复 这个想法是要么具有负的大小值 无着色 要么
  • IE,CSS:如何删除单击按钮时出现的突出显示

    在IE中看一下这个页面 我有最新版本 但在旧版本中也会发生这种情况 http tinuska vibraflex cz http tinuska vibraflex cz 在上面的链接中 页面底部有两个圆形按钮 单击该按钮时 按钮周围会出现
  • 如何在 Windows 上为 PyCharm 配置 Python Kivy?

    我在让 Kivy 在 Windows 7 上与 PyCharm 配合使用时遇到问题 我已成功通过 文件 gt 设置 gt Python 解释器 gt 路径 选项卡添加了大部分外部库 我使用的是 Kivy 版本的 Python 当我运行一个
  • 没有已知的从指针到引用到指针的转换

    我遇到以下 g 错误 Menu hpp 66 41 error no matching function for call to Menu Stack