user类2.0版
老师布置了新内容,要求在原有user类的基础上,添加一个currentid,要求初始值是999,每增加一个客户,id值就加一,并把当前id值赋给最新一个用户
进行了一番尝试
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。首先在原来的代码里修改,代码如下:
#include<iostream> #include<string> using namespace std; class user { public: void setinfo(string name0,string passwd0="111111",string email0=" "); void changepasswd(); void printinfo(); private: string name; string passwd; string email; static int currentid; //新声明的currentid ,是一个静态数据成员 }; int user::currentid=999;//静态数据成员在类外定义 void user::setinfo(string name0,string passwd0,string email0) { name=name0; passwd=passwd0; email=email0; currentid++; //每多一个成员,Id加一 } void user::changepasswd() { cout<<"请输入旧密码:" <<endl; string passwd; int i=0; for(i=0;i<3;i++) { cin>>passwd; if(passwd=="111111") break; else cout<<"密码错误,请重新输入"<<endl; } if(i==3) cout<<"请稍后再试"<<endl; else { cout<<"密码正确,输入新密码"<<endl; cin>>passwd; cout<<"修改密码成功"<<endl; } } void user::printinfo() { cout<<"name:"<<name<<endl; cout<<"passwd:"<<"******" <<endl; cout<<"email:"<<email<<endl; cout<<"当前用户ID为:"<<currentid<<endl;//把当前的id输出 } int main() { cout << "testing 1......" << endl; user user1; user1.setinfo("Leonard"); user1.printinfo(); user1.changepasswd(); cout << endl << "testing 2......" << endl << endl; user user2; user2.setinfo("Jonny","92197","xyz@hotmail.com"); user2.printinfo(); return 0; }
一开始并没有写成多文件结构的形式,编译通过,没有显示错误,效果如下:
然后开始尝试改成多文件结构的形式,问题就成堆成堆地冒出来了
尝试改的多文件结构如下:
//user.h
#ifndef USER_H #define USER_H #include<cstring> #include<iostream> using namespace std; class user { public: void setinfo(string name0,string passwd0="111111",string email0=" "); void changepasswd(); void printinfo(); private: string name; string passwd; string email; static int currentid; }; #endif
//user.cpp
#incude"user.h" #include<iostream> #include<cstring> using namespace std; int user::currentid=999; void user::setinfo(string name0,string passwd0,string email0) { name=name0; passwd=passwd0; email=email0; currentid++; } void user::changepasswd() { cout<<"请输入旧密码:" <<endl; string passwd; int i=0; for(i=0;i<3;i++) { cin>>passwd; if(passwd=="111111") break; else cout<<"密码错误,请重新输入"<<endl; } if(i==3) cout<<"请稍后再试"<<endl; else { cout<<"密码正确,输入新密码"<<endl; cin>>passwd; cout<<"修改密码成功"<<endl; } } void user::printinfo() { cout<<"name:"<<name<<endl; cout<<"passwd:"<<"******" <<endl; cout<<"email:"<<email<<endl; cout<<"当前用户ID为:"<<currentid<<endl; }
//main.cpp
#include<iostream> #include"user.h" #include<string> using namespace std; int main() { cout << "testing 1......" << endl; user user1; user1.setinfo("Leonard"); user1.printinfo(); user1.changepasswd(); cout << endl << "testing 2......" << endl << endl; user user2; user2.setinfo("Jonny","92197","xyz@hotmail.com"); user2.printinfo(); return 0; }
1.做实验二时在机房里老师演示过如何使用多文件结构,当时听明白了,但是讲完在课上并没有用多文件结构,等到过了几天再尝试的时候发现忘得差不多了,试着写一下,各种报错,一开始连 #ifndef 和 #define 的顺序都搞错了,在写user.cpp时忘记#include<cstring>导致一堆提示string未定义,当时摸不着头脑,被吓到了。
2.在百度后稍微搞懂一些最简单的多文件结构的原理后,开始继续改user类,说是改,其实就是把上面那一整段分成三小个,然后又出问题了,第一次遇见这样的错误
之前遇到这个情况,都是在已经打开编译的小黑框后再一次编译时会出现,这一此根本没编译成功还出现这种情况,查了百度,说有可能是杀毒软件的问题,不明白问题出在哪里,今天又把老师发的实验三的ball的项目试了一遍,发现编译没有任何问题,希望有小伙伴知道可以告诉我一下,谢谢
然后又在codeblocks里试了一下,发现也出现了一种全新的错误,百度后查到我的编译少一个叫gdb.exe的调试器,然后到官网http://www.mingw.org/上去下载,结果英语不太好,没找到在哪里。
作业反思:
1.准确来说这次作业没有完全完成,改user多文件改了好久最后还是有问题。
2.老师在实验课上讲的新东西最好讲完就自己尝试一遍,不然课后要多花十倍的时间才能补回来,活生生的反面教材。
3.暴露了英语不好的事实,不抢救一下以后查文献也麻烦了。
4.在面对难题的时候还是没办法坚持下去直到解决掉问题,在有时候写oj的时候也是这样的,需要改正这个坏毛病。
