[Error] cannot call member function ‘‘ without object
今天遇到一个错误
[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相关推荐
- 错误信息:cannot call member function ‘ ‘ without object 处理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.源码展示 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一.源码展示 std::vectorstd::strin ...
- 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 ...
- DEDECMS后台:Fatal error:Call to a member function read()解决方案
DEDECMS后台:Fatal error:Call to a member function read 当我们后台点击模板,会出现这种提示错误[DEDECMS后台:Fatal error:Call ...
- invalid use of non-static member function
现在有一个 Object 类,它有两个方法: Recv 负责接收数据,并传递给 Process Process 负责处理数据 我们希望这个类接收完数据后启动线程去处理,不阻塞后面的其他业务逻辑. cl ...
- 成员函数指针与高性能的C++委托 (Member Function Pointers and the Fastest Possible C++ Delegates)...
标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托(delegate)")在一些 ...
- 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 ...
- [C++]Call virtual member function in constructor or destructor
嗷嗷按,今天被问到在constructor/destructor中调用virtual member function的问题.答错了,很羞耻. 依稀记得在constructor/destructor调用 ...
- call to member function bind_param() on boolean...........
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in .... Stack trace: ...
- 出现错误illegal call of non-static member function?
当出现错误"illegal call of non-static member function"? 解决方法:原因在于没有经过对象,就调用了非静态成员函数,只有静态成员函数(st ...
最新文章
- 基于灰度共生矩阵(GLCM)的图像纹理分析与提取
- 公司网络推广浅析网站想要“久居”首页的方法有哪些?
- 三个表格居中纵向html,前端技巧集:图与表三步垂直居中
- 0917变量类型注意点
- vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...
- enableEventValidation是干什么的?
- JS正则表达式详解[转]
- iphone11主卡在上还是下
- Linux中jsoncpp的编译使用
- 世界名牌大学公开课集
- linux rm rf 无法删除文件夹,linux下的文件用root用户rm -rf命令无法删除解决方案
- 怎样获得python证书_如何从python中的x509证书中提取公钥?
- 应用签名不一致,该应用可能被篡改的问题
- ProSci 艾美捷CCR3抗体
- 【数据安全 每周资讯】欧盟数字新法案即将出台,给美科技巨头再施“紧箍咒”
- WordPress标签云小工具详解
- 论文笔记:基于深度学习的遥感影像变化检测综述
- 获取HEVC视频的ParameterSets
- Vue入门之Web端CURD前端项目示例
- 探索云原生之“翻译翻译,什么是云原生”