今天遇到一个错误
[Error] cannot call member function ‘int Computer::getCnt()’ without object
意思是不能在没有对象的情况下,调用Computer类的成员函数getCnt();

原代码

#include<iostream>
#include<cstring> using namespace std;class Computer{public:char *name;static int cnt;Computer(char *n){//使用strcpy将n复制到name中int l=strlen(n);name=new char[l+1];    strcpy(name,n);cnt++;}Computer(const Computer&p)//拷贝构造函数{int l=strlen(p.name);name=new char[l+1];  strcpy(name,p.name);cnt++;} ~Computer(){delete []name;cnt--;} Computer setName(char* nn){int l=strlen(nn);name=new char[l+1];strcpy(name,nn);return *this;//return this返回自身对象的指针 //return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )}void print(){int ll=strlen(name);for(int i=0;i<ll;i++){cout<<name[i];}cout<<endl;
//      cout<<name<<endl;}int getCnt(){return cnt;}
};int Computer::cnt=0;
int main()
{char str[101];cout<<"1:"<<Computer::getCnt()<<" computers."<<endl;   Computer com1("Tom"), com2(com1);cout<<"2:"<<com2.getCnt()<<" computer."<<endl;cin>>str;com2.setName(str).print();com2.print();cout<<"3:"<<com2.getCnt()<<" computer."<<endl;return 0;
}

这里在代码第60行其实是想输出static变量sum的初始值,需要调用静态函数输出,否则出现上述错误

修改后代码

#include<iostream>
#include<cstring> using namespace std;class Computer{public:char *name;static int cnt;Computer(char *n){//使用strcpy将n复制到name中int l=strlen(n);name=new char[l+1];    strcpy(name,n);cnt++;}Computer(const Computer&p)//拷贝构造函数{int l=strlen(p.name);name=new char[l+1];  strcpy(name,p.name);cnt++;} ~Computer(){delete []name;cnt--;} Computer setName(char* nn){int l=strlen(nn);name=new char[l+1];strcpy(name,nn);return *this;//return this返回自身对象的指针 //return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )}void print(){int ll=strlen(name);for(int i=0;i<ll;i++){cout<<name[i];}cout<<endl;
//      cout<<name<<endl;}static int getCnt(){return cnt;}
};int Computer::cnt=0;
int main()
{char str[101];cout<<"1:"<<Computer::getCnt()<<" computers."<<endl;//[Error] cannot call member function 'int Computer::getCnt()' without object//不能在没有对象的情况下,调用Computer类的成员函数getCnt();//修改:将getCnt()声明为静态函数 Computer com1("Tom"), com2(com1);cout<<"2:"<<com2.getCnt()<<" computer."<<endl;cin>>str;com2.setName(str).print();com2.print();cout<<"3:"<<com2.getCnt()<<" computer."<<endl;return 0;
}

其实直接将使用静态变量的函数定义为静态函数,就可以避免出现此类错误

参考
1.关于错误信息:cannot call member function ’ ’ without object
2.Error:cannot call member function without object

[Error] cannot call member function ‘‘ without object相关推荐

  1. 错误信息:cannot call member function ‘ ‘ without object 处理

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.源码展示 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一.源码展示 std::vectorstd::strin ...

  2. error: reference to non-static member function must be called sort(nums.begin(),nums.end(),cmp1)

    leetcode179题中编译出现则个问题 出错的代码: class Solution { public:bool cmp1(const int& a, const int& b){s ...

  3. DEDECMS后台:Fatal error:Call to a member function read()解决方案

    DEDECMS后台:Fatal error:Call to a member function read 当我们后台点击模板,会出现这种提示错误[DEDECMS后台:Fatal error:Call ...

  4. invalid use of non-static member function

    现在有一个 Object 类,它有两个方法: Recv 负责接收数据,并传递给 Process Process 负责处理数据 我们希望这个类接收完数据后启动线程去处理,不阻塞后面的其他业务逻辑. cl ...

  5. 成员函数指针与高性能的C++委托 (Member Function Pointers and the Fastest Possible C++ Delegates)...

    标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托(delegate)")在一些 ...

  6. Error in eval(predvars, data, env) : object ‘**‘ not found

    Error in eval(predvars, data, env) : object '**' not found 目录 Error in eval(predvars, data, env) : o ...

  7. [C++]Call virtual member function in constructor or destructor

    嗷嗷按,今天被问到在constructor/destructor中调用virtual member function的问题.答错了,很羞耻. 依稀记得在constructor/destructor调用 ...

  8. call to member function bind_param() on boolean...........

    Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in .... Stack trace: ...

  9. 出现错误illegal call of non-static member function?

    当出现错误"illegal call of non-static member function"? 解决方法:原因在于没有经过对象,就调用了非静态成员函数,只有静态成员函数(st ...

最新文章

  1. 基于灰度共生矩阵(GLCM)的图像纹理分析与提取
  2. 公司网络推广浅析网站想要“久居”首页的方法有哪些?
  3. 三个表格居中纵向html,前端技巧集:图与表三步垂直居中
  4. 0917变量类型注意点
  5. vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...
  6. enableEventValidation是干什么的?
  7. JS正则表达式详解[转]
  8. iphone11主卡在上还是下
  9. Linux中jsoncpp的编译使用
  10. 世界名牌大学公开课集
  11. linux rm rf 无法删除文件夹,linux下的文件用root用户rm -rf命令无法删除解决方案
  12. 怎样获得python证书_如何从python中的x509证书中提取公钥?
  13. 应用签名不一致,该应用可能被篡改的问题
  14. ProSci 艾美捷CCR3抗体
  15. 【数据安全 每周资讯】欧盟数字新法案即将出台,给美科技巨头再施“紧箍咒”
  16. WordPress标签云小工具详解
  17. 论文笔记:基于深度学习的遥感影像变化检测综述
  18. 获取HEVC视频的ParameterSets
  19. Vue入门之Web端CURD前端项目示例
  20. 探索云原生之“翻译翻译,什么是云原生”

热门文章

  1. c语言 is函数,关于C语言回调函数的详解~
  2. Race condition between wait_event and wake_up
  3. 立象Argox OX- 100条码机如何打印标签
  4. 使用html5制作表格
  5. css+js校验 实现仿网易邮箱注册界面 和 校验 功能
  6. 记7月份Android面试感想
  7. 辅城坳科目三路线口诀
  8. Spark综合练习——电影评分数据分析
  9. Kafka单机部署学习演示案例
  10. windows安装CUDA11.1,搭建PaddlePaddle和PaddleHub