我似乎在修复这里的东西,因为当我运行程序时,我得到了输出: 由于目前没有有效信息,因此无法禁用您的Grocery信息 无论我为Grocery Id和Name输入什么。 以下是我的班级定义:
3 #include <iostream>
4 using namespace std;
5 Grocery::Grocery(){
6 id =0;
7 name=nullptr;
8 }
9 Grocery::Grocery(char* ProductName,int Productid){
10 if (id < 0 || name == nullptr) {
11 id =0;
12 name=nullptr;
13 }
14 else{
15 name=new char[strlen(ProductName)+1];
16 strcpy(name,ProductName);
17 id=Productid;
18 }
19 }
20 Grocery::Grocery(Grocery &src){
21 id=src.id;
22 if (src.name==nullptr) {
23 name = new char[strlen(src.name+1)];
24 strcpy(name,src.name);
25 }
26 else
27 name=nullptr;
28 }
29 Grocery::~Grocery(){
30 delete [] name;
31 name = nullptr;
32 }
33 void Grocery::display() const{
34 if (id == 0 && name == nullptr)
35 cout<<"Unable to disable your Grocery's information as there is no valid information at this time"<<endl;
36 else
37 cout<<"The Grocery's id is "<< id <<" and the name of the item is "<< name;
38 }
39 bool Grocery::isGreaterThan(const Grocery &src)const{
40 if(id>src.id)
41 return true;
42 else
43 return false;
44 }
45 Grocery& Grocery::Grocery::operator=(const Grocery& src){
46 if (this !=&src) {
47 id=src.id;
48 delete [] name;
49 }
50 if (src.name != nullptr) {
51 name = new char[strlen(src.name) + 1];
52 strcpy(name,src.name);
53 }
54 else
55 name = nullptr;
56 return *this;
57 }
我假设我在我的课程定义中修复一些相当简单的东西,但任何帮助都会很好。
答案 0 :(得分:0)
Grocery::Grocery(char* ProductName,int Productid){ if (id < 0 || name == nullptr) {
这似乎是你的大问题。当您应该检查id
和name
构造函数参数时,您正在检查尚未初始化的ProductName
和Productid
类成员。
您可能会获得id
的半随机垃圾值,而这些值可能最终会消极。