invalid+use+of+non-static+member+function+问题

个人c++ 错误记录 1.类定义输入运算符 >> 时候,代码最后应该检测 输入流是否为有效,如果无效,应该把输入对象置于默认初始化状态。 定义>>时候,类必须是非常量引用。定义<<,最好是常量引用。 定义的时候不能加friend. 2. ... 阅读详情
#include <iostream>


using namespace std;
class A
{
public :
    A (int i)
    {
        a = i;


    }
    int fun(int b)
    {
        return a*c+b;
    }
    int c;
private :
    int a;
};


int main()
{
    A x(18);
    int A::*pc;
    pc = &A::c;
    x.*pc = 5;
    int (A::*pfun)(int);
    pfun = A::fun;
    A *p = &x;
    cout << (p->*pfun)(10)<<endl;


    return 0;

}


会出现错误:error: invalid use of non-static member function 'int A::fun(int)'|


int (A::*pfun)(int)=A::fun;
改成
int (A::*pfun)(int)=&A::fun;

 

在C++语言中,对于一个由类名加俩冒号再加成员名构成的东西(学名叫“quilified-id”),比如:A::x,只有当x是A类的静态成员的时候,A::x才能表示一个左值。

而对于函数类型到函数指针类型的默认转换,只有当函数类型是左值的时候才行。所有对于非静态的成员函数,就不存在这种从函数类型到函数指针类型的默认转换,于是编译器也就不知道这个
p = A::f
该怎么搞了。

 

(1)要说函数地址确定不确定,由于非静态成员函数指针可以有多态行为,因此,至少在编译期,其地址还真的无法确定。
(2)虽然所有的编译器都肯定会把类的非静态成员函数的代码只生成一份(不管是编译时还是运行时),这一点跟非静态成员变量不一样,变量每个对象都有独立的一份。——但我认为,这依然是编译器的实现细节而已,而不是语言特性。从抽象的语言特性角度讲,非静态的成员函数跟非静态的成员变量一样,在没有对象实例的时候,是形不成左值的。

http://topic.youkuaiyun.com/t/20060906/11/5002223.html 
Anaconda安装及配置+pytorch深度学习环境(2024复旦计算机工作站0705) Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,Pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。 阅读详情

相关推荐

从收音机到Arduino:手把手教你用BJT三极管搭建一个简易音频放大器(附电路图与元件清单)

本文详细介绍了如何使用BJT三极管搭建简易音频放大器,涵盖电路原理、元件选择、设计步骤及调试技巧。通过实践项目帮助电子爱好者深入理解BJT的放大特性,并提供与Arduino结合的扩展应用方案,适合创客和DIY玩家。

aitie1479的博客 438

invalid use of non-static member function

现在有一个 Object 类,它有两个方法: Recv 负责接收数据,并传递给 Process Process 负责处理数据 我们希望这个类接收完数据后启动线程去处理,不阻塞后面的其他业务逻辑。 class Object { public: void Recv() { int a = 2; std::thread t(Process, a); // Do...

fengfengdiandia的专栏 4万+

RocketMQ 为什么要自己做一个 NameServer ?RocketMQ 5.x 版本中的 proxy、controller 和 container 分别有什么用 ?

1.独立运行的分散结构 2.简化实现,容忍部分数据不一致 Proxy:多语言支持、简化开发 Controller: 提高 Broker 的性能 Container:提高资源利用率,平衡负载

xaiobit_hl的博客 1489

「 C++ 11」std::thread “invalid use of non-static member function“问题处理

因为静态函数不与类的任何对象相关联。因此,我们可以直接将类的静态成员函数作为线程函数传递,而无需传递任何指向对象的指针。根据std::thread构造函数进行传参。

谁吃薄荷糖 7744

Zemax实战:手把手教你设计一个40倍、NA0.65的显微物镜(附初始结构文件)

本文详细介绍了使用Zemax设计40倍、NA0.65显微物镜的完整流程,从初始结构搭建到优化验证,涵盖光学设计的关键技巧和实战经验。通过分阶段优化策略和公差分析,帮助工程师快速掌握高倍显微物镜的设计方法,提升光学系统性能。

weixin_42525369的博客 342

从C-EPS到DP-EPS:手把手图解不同EPS类型怎么选,对你的车操控感影响有多大?

方向盘转动时那股细腻的阻尼感,高速过弯时令人安心的沉稳,或是狭窄车位里一根手指就能拨动的轻盈——这些看似微妙的差异,其实都源自转向系统电机那几厘米的安装位置变化。当我们谈论驾驶乐趣时,发动机参数和悬架调校总是占据C位,但真正连接驾驶者与车辆的神经末梢,恰恰是那套默默工作的电动助力转向系统(EPS)。不同EPS类型带来的操控特性差异,可能比马力数字更能定义一辆车的性格。

weixin_30920513的博客 531

记录出现错误: invalid use of non-static member function

非静态成员函数的使用无效 出现原因:回调函数的指针类型为void(*) 解决办法:在该函数前加上static关键字 class MqttClient { public: MqttClient(std::string host, int port, std::string username, std::string password, bool subscribe); std::string GetSubscribeMessage(); private: std::string host_;

面包的博客 8588

kemeas算法继续优化——elkan kmeas算法

题记:又是凌晨3点的夜 elkan kmeans算法 在我的上一篇博客《kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化》中,在一般kmeans算法的基础上,添加了对于初始条件和距离计算更上的一些优化技巧。这篇博客聊一聊elkan算法,其实也是对于kmeans运行速度的优化算法。主要作用与kmeans的距离计算过程。 原理 假如我们已经知道任意两个样本之间的距离,再假设我们已经知道了样本1与聚类中心1之间的距离,根据三角性两边之和大于第三边,c+d>a,所以如果

铁血军的小博客 7065

c++ error: invalid use of non-static member function

c++ error: invalid use of non-static member function

xiaozhi 3622

YOLOv11改进 | 融合改进篇 | 利用尺度统一检测头DynamicHead融合P2增加小目标检测层(让小目标无所遁形)

本文给大家带来的最新改进机制是针对性的改进,针对于小目标检测增加P2层针对于大目标检测增加P6层利用DynamicHead(原版本一比一复现,全网独一份,不同于网上魔改版本)进行检测,其中我们增加P2层其拥有更高的分辨率,这使得模型能够更好地捕捉到小尺寸目标的细节。我们增加P6层是一个较低分辨率但具有更大感受野的特征层。对于大尺寸目标,这意味着模型可以更有效地捕捉到整体的结构信息。在这些的基础上我们配合DynamicHead可以使模型根据不同尺寸的目标动态调整其检测策略,进一步提升模型的精度。

Snu77的博客 3948

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 862

【技术问题】C++多线程pthread_create error: invalid use of non-static member function

问题如下 pthread_create error: invalid use of non-static member function 先简要解释下pthread_create这个函数的各个参数: param1: 为指向线程标识符的指针。 param2: 用来设置线程属性。 param3: 线程运行函数的起始地址。 param4: 运行函数的参数。 出错往往是第三个参数,报错的原因要求我们要将...

Being self-discipline leads to freedom 2789

Creo模型装配总结

creo7.0的零件装配操作方法,建立基准面、新建约束、约束顺序

heda3的博客 1万+

invalid use of non-static member function:ROS 初始化subscriber时问题的解决

MoveBase_cmd_vel_sub = node_handle.subscribe( "/movebase_cmd_vel", 60, DHRobotBase::moveBase_cmd_vel); // 订阅 topic 在使用这句话时出现这个问题: error: invalid use of non-static member function "/movebase...

跃动的风的博客 3088

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C++ invalid use of non-static member function

https://www.cnblogs.com/jianglei-tz/archive/2012/09/02/static-member-function.htmlC++编译报错:invalid use of non-static member function - 知乎

298

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

关于类中重载sort函数的报错问题(解决error: invalid use of non-static member function 'bool Solution::cmp(int, int)')

刷LeetCode的时候,由于最终结果是要写一个solution的类,但是比较头疼的是sort似乎不可以写一个cmp函数来重载。 例如 class Solution { public: int Hash[1005]; bool cmp(int a, int b){ return Hash[a] != Hash[b] ? Hash[a] < Hash[b]...

qq_41562704的博客 3814

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++中static关键字在类中常见问题分析

一.static变量的初始化问题 static变量是和类绑定的变量,和一般变量和对象绑定不同。它在类实例化(创建对象)之前就分配空间,而非static变量是在创建对象时进行空间分配。那么该在哪里对static变量进行初始化呢? 1.能否在构造函数里进行static变量的初始化? 由前面的叙述可知,static变量在对象创建前就要进行空间分配。而构造函数是在创建对象时进行的调用。因此,

Just for funnnnnnnnnnnn 1337

ROS 报错:error: invalid use of non-static member function

代码: rs_camera_info_subscriber_ = nh.subscribe("camera/color/camera_info", 1, &ContinuousDetector::rsCameraInfoCallback); error: invalid use of non-static member function ubscriber_ = nh.subscribe...

chenyr0021 3123

C++ 多线程 报错invalid use of non-static member function

创建一个类test: class test { public: void func() { std::cout<<"test"; } }; main函数多线程调用test: test *t=new test; std::thread th(t->func); 编译报错,GCC编译器报错invalid use...

xysjj的博客 1万+

「 C++ 11」std thread “invalid use of non-static member function

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、

2401_84166672的博客 931

Linux C++调用线程报错 error: invalid use of non-static member function

问题描述:基于C++创建一个录音的类,抓取mic的pcm数据,并返回。 class MicRecordImpl { void* audioThread(void *param); void startRecord(void); }; 其中,在实现类有一个线程函数: void* MicRecordImpl::audioThread(void *param) { //d...

chenliang0224的专栏 4578

error: invalid use of non-static member function

转载学习:https://blog.youkuaiyun.com/bill_ming/article/details/6872165 #include &lt;iostream&gt; using namespace std; class A { public :     A (int i)     {         a = i;     }     int fun(int b)     {   ...

天才樱木 3万+

「 C++ 11」std thread “invalid use of non-static member function(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、

2301_76379606的博客 1126

pthread_create error: invalid use of non-static member function

问题描述:基于C++创建一个录音的类,抓取mic的pcm数据,并返回。 class MicRecordImpl { void* audioThread(void *param); void startRecord(void); }; 其中,在实现类有一个线程函数: void* MicRecordImpl::audioThread(void *param) { //do...

Aero's WorkSpace. 3721

常见错误(1):error: invalid use of non-static member function

在c++中,这种错误一般就是错误地调用了不属于某个类的成员函数或者数据成员。 例如在使用ros的tf包进行坐标变换时,对于tf::Quaternion quat_tf,如果试图用quat_tf.x来读取四元数的第一个元素,就会出现上面的错误。必须用 tf::quaternionMsgToTF(quat_msg, quat_tf) 把其转换成geometry_msgs::Quaternion...

limhsysu的博客 2万+
上一篇: while(!feof(...)) 中加if(!feof(...)) 问题
下一篇: 浅析C++中的this指针
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值