错误:reference to non-static member function must be called

2023-11-02

问题:

今天刷牛客这道题的时候:

题目描述:

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

这是我的代码:

class Solution {
public:
    bool bijiao(int a, int b)
    {
        string sb = to_string(a)+to_string(b);
        string sa = to_string(b)+to_string(a);
        if(sb<sa)
            return true;
        else
            return false;
	}
        
    string PrintMinNumber(vector<int> numbers) {
        sort(numbers.begin(), numbers.end(), bijiao);   // 提示错误出在此处
        string s = "";
        for(int i=0; i<numbers.size(); ++i)
        {
            s += to_string(numbers[i]);
		}
        return s;
    }
};

错误提示为:

reference to non-static member function must be called: sort(numbers.begin(), numbers.end(), bijiao);

解决:

我们先看一下sort函数的定义:

template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp)

参数comp的解释:

comp: Binary function that accepts two elements in the range as arguments, and returns a value
convertible to bool.The value returned indicates whether the element passed as first argument is
considered to go before the second in the specific strict weak ordering it defines.
The function shall not modify any of its arguments.
This can either be a function pointer or a function object.

在我写的这段代码中,sort(numbers.begin(), numbers.end(), bijiao)中第三个参数是一个函数指针,然而bijiao函数是一个非静态成员函数,非静态成员函数指针和普通函数指针是有区别的。具体区别,我们后文会讲到,然而静态成员函数指针和普通函数指针没有区别,所以此处将

bool bijiao(int a, int b);


改为

static bool bijiao(int a, int b); 


即可通过编译

或者将bijiao函数放在类外,改为全局普通函数亦可通过编译。 

接下来,我们解释成员函数指针和普通函数指针的不同:

我们知道bijiao成员函数拥有一个 implicit parameter

bool bijiao(Solution* this, int a, int b) 
所以,它和普通函数指针是有本质区别的,毕竟它们的参数列表都不相同。而静态成员函数没有this指针,这也就是静态成员函数指针和普通函数指针没有区别的原因。

脱离本问题,我们谈谈成员函数指针和普通函数指针的区别:

具体可参考这篇博客,讲的很好,侵删:

点击打开链接








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

错误:reference to non-static member function must be called 的相关文章

  • 【IP层分组转发的流程】划分子网的情况下,分组转发的算法。

    首先 参考了一张谢希仁老师的书里的一个示例 主机H1向H2发送分组的过程 首先 跟本子网内的子网掩码 255 255 255 128与目标主机H2的IP地址 128 30 33 128 相与得到网络号 128 30 33 128 显然这与子
  • IDEA从零到精通(12)之用C3P0连接Mysql数据库

    文章目录 作者简介 引言 导航 热门专栏推荐 一 下载驱动并加入项目中 二 编写配置文件 三 编写工具类 四 编写测试类 五 测试运行 小结 导航 热门专栏推荐 作者简介 作者名 编程界明世隐 简介 CSDN博客专家 从事软件开发多年 精通
  • Linux nohup、&、 2>&1是什么?

    基本含义 dev null 表示空设备文件 0 表示stdin标准输入 1 表示stdout标准输出 2 表示stderr标准错误 gt file 表示将标准输出输出到file中 也就相当于 1 gt file 2 gt error 表示将
  • JVisualVM初步使用

    JVisualVM初步使用 1 前言 jvm调优工具有常见的为Jconsole jProfile VisualVM Jconsole 为jdk自带 功能简单 但是可以在系统有一定负荷的情况下使用 对垃圾回收算法有很详细的跟踪 JProfil
  • 学习HTML的知识点总结

    一 网页 1 什么是网页 网站是指在因特网上根据一定规律 使用HTML等制作用于展示特定内容的网页集合 网页是网站中的一 页 通常是HTML格式的文件 他要通过浏览器来阅读 网页是构成网站的基本元素 它通常由图片 链接 文字 声音 视频等元
  • 【大模型】更强的 LLaMA2 来了,开源可商用、与 ChatGPT 齐平

    大模型 可商用且更强的 LLaMA2 来了 LLaMA2 简介 论文 GitHub huggingface 模型列表 训练数据 训练信息 模型信息 许可证 参考 LLaMA2 简介 2023年7月19日 Meta 发布开源可商用模型 Lla
  • 合并有序数组

    合并两个有序数组 描述 给你两个有序整数数组 nums1 和 nums2 请你将 nums2 合并到 nums1 中 使 num1 成为一个有序数组 说明 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 你可以假设 num
  • Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

    一 环境搭建 1 Python下载及安装 Python可应用于多平台包括windows Linux 和 Mac OS X 本文主要介绍windows环境下 你可以通过终端窗口输入 python 命令来查看本地是否已经安装Python以及Py
  • 软件测试22种测试方法与详解

    黑盒测试 不基于内部设计和代码的任何知识 而是基于需求和功能性 白盒测试 基于一个应用代码的内部逻辑知识 测试是基于覆盖全部代码 分支 路径 条件 单元测试 最微小规模的测试 以测试某个功能或代码块 典型地由程序员而非测试员来做 因为它需要
  • 用js制作一个视觉差背景

    我在网上冲浪的时候看到了一个文字和背景下滑速度不一致的情况 这看起来背景会有一种3d的感觉 于是研究了一下 首先先写出大概的html和css div class box div class bg div h2 我是一个文字 h2 p 我是一
  • 算法实验题1

    第一题 由1 3 4 5 7 8这6个数字组成六位数中 能被11整除的最大的数是多少 解答 可以使用暴力枚举法 将1 3 4 5 7 8的所有排列组合情况求出来 判断它们是否能被11整除 然后取其中能被11整除的最大值 但是这个方法的时间复

随机推荐

  • 蓝桥杯 第6天 动态规划(4)

    目录 1 121 买卖股票的最佳时机 力扣 LeetCode leetcode cn com 1 暴力解法 2 动态规划 2 122 买卖股票的最佳时机 II 力扣 LeetCode leetcode cn com 3 123 买卖股票的最
  • uni-app 页面样式

    页面样式与布局 尺寸单位 uni app 支持的通用 css 单位包括 px rpx px 即屏幕像素 rpx 即响应式px 一种根据屏幕宽度自适应的动态单位 以750宽的屏幕为基准 750rpx恰好为屏幕宽度 屏幕变宽 rpx 实际显示效
  • C++整数转成二进制方法总结

    经常遇到要用到二进制的情况 这里我就记录下 1 逐次经典位操作 返回一个含有二进制数的vector include
  • 【深度学习之图像理解】图像分类、物体检测、物体分割、实例分割、语义分割的区别

    Directions in the CV 物体分割 Object segment 属于图像理解范畴 那什么是图像理解 Image Understanding IU 领域包含众多sub domains 如图像分类 物体检测 物体分割 实例分割
  • 前端zip.js实现加密打包上传文件

    背景 一方面 部分系统对文件的私密性和安全性要求较高 实现前端加密打包 服务端不存储密码 下载时手动输入密钥并解压文件 另一方面 传输压缩包到客户端 节约了带宽 节约了传输时间 使用的库 zip js Support of the Zip6
  • List写入Excel,poi操作

    前言 公司最近需要将所有的报表导出集中到报表中心系统中 需要做一个通用的Excel工具类 让各个业务系统简单高效的生成Excel报表 由于原先各个业务系统生成报表方式都不一样 有的地方还直接使用了CSV 因此需要统一生成Excel 本来想用
  • Android Studio 可以正常编译运行 但是代码爆红

    这段时间毕设选题 选了一个自己曾经做过的题目 因为之前是用Android Studio2 3 3写的 现在导入Android Studio 3 2 1 代码报错 但是能正常编译运行 很是奇怪 主要报错原因是 找不到有些类 之前用Androi
  • zookeeper(二)——2PC理论、zookeeper集群、ZAB 协议

    一 关于 2PC 提交 Two Phase Commitment Protocol 当一个事务操作需要跨越多个分布式节点的时候 为了保持事务处理的 ACID特性 就需要引入一个 协调者 TM 来统一调度所有分布式节点的执行逻辑 这些被调度的
  • CTFshow php特性 web111

    目录 源码 思路 题解 总结 源码
  • adworld-crypto-banana_princess

    拿到了一个打不开的pdf文件 用hex editor打开一下看看 再看一下正常的pdf文件 猜测是用了rot13映射了一下字母字符 解密脚本 def load data filename content with open filename
  • SpringBoot线程上下文传递数据

    1 底层实现 使用ThreadLocal 使用方法 public T get public void set T value public void remove 2 自定义上下文 package com ybw context confi
  • golang 闭包函数的应用技巧

    一 有名函数和匿名函数 函数变量类型初始值为nil 函数字面量类型的语法表达格式是 func InputTypeList OutputTypeList 无参函数 func fun var f func 无入参无返回值的函数对象声明 初始值为
  • 以太坊教程:入门学习开发以太坊dapp

    一 区块链 1 分布式去中心化 比特币设计的初衷就是要避免依赖中心化的机构 没有发行机构 也不可能操纵发行数量 既然没有中心化的信用机构 在电子货币运行的过程中 也势必需要一种机制来认可运行在区块链上的行为 包括比特币的运营 亦或是运行在区
  • 【pytorch】Module.parameters()函数实现与网络参数管理

    我们知道可以通过Module parameters 获取网络的参数 那这个是如何实现的呢 我先直接看看函数的代码实现 def parameters self r Returns an iterator over module paramet
  • Edge插件之WeTab,画面优美,可以免费使用chatgpt,很难不爱

    目录 一 普通的edge新标签页 二 安装WeTab插件 1 WeTab插件的安装非常简单 只需在百度搜索wetab 进入官网 2 进入官网 点击edge图标 进入插件下载页面 3 这里由于我是已经安装成功 显示的是删除和启动 首次下载的话
  • element-ui el-tooltip 显示导致父元素 hover 失效问题解决

    添加如下css属性 el tooltip popper pointer events none pointer events 属性用于设置元素是否对鼠标事件做出反应 CSS 语法 属性值 pointer events auto 默认值 设置
  • maven3.8.2版本导致openjdk.jar包报错:Cannot find file

    真的吐血了快 又是maven问题 导致项目打包报错 maven问题梅开二度 我醉了呀 问题描述 在idea中使用Terminal终端 对项目进行打包 然后报错 报错信息 ERROR Failed to execute goal on pro
  • IAR使用技巧

    一 状态栏的解析 Compile 只对目前打开的c文件进行语法检查 不对它进行link Make 对工程所有打开的c文件进行语法检查和link 只编译有改动的文件或者设置变动的文件 Rebuild All 编译链接当前工程 不管文件或者设置
  • Stem教育究竟是什么性质

    STEM教育是中性的 是既可以为应试教育又可以为素质教育服务的工具和武器 用素质教育去引爆STEM教育 才能产生良性的的核裂变 格物斯坦小坦克来研究下stem教育究竟是什么性质 科学教育有一个不大不小的误区 以为 科学 教育就是教科学知识
  • 错误:reference to non-static member function must be called

    问题 今天刷牛客这道题的时候 题目描述 输入一个正整数数组 把数组里所有数字拼接起来排成一个数 打印能拼接出的所有数字中最小的一个 例如输入数组 3 32 321 则打印出这三个数字能排成的最小数字为321323 这是我的代码 class