<分区>
我正在从事一个学校项目,该项目基本上是在构建一本字典。其中一个选项是搜索具有相同定义的词并将其打印出来。 在我的字典课上,我有:
#pragma once
#include "Definition.h"
class Dictionary
{
private:
/*Private data members*/
int num_words = 0;
Definition** book;
public:
/*Constructors & destructor*/
Dictionary();
Dictionary(const Dictionary&);
~Dictionary();
/*Search for existing definition*/
bool checkCopy(const Definition&);
/*bool operator overloading*/
bool operator==(const Dictionary&) const;
bool operator!=(const Dictionary) const;
/*Operator = -= += overloading*/
Dictionary& operator=(const Definition&);
Dictionary& operator=(const Dictionary&);
Dictionary& operator-=(const int);
Dictionary& operator+=(const Definition&);
/*Input & output operators overloading*/
friend ostream& operator<<(ostream&, const Dictionary&);
friend istream& operator>>(istream&, Dictionary&);
/*Index operator overloading*/
Definition& operator[](int);
Definition operator[](int) const;
/*Sorting dictionary function*/
void sortDictionary();
/*Utility functions*/
int getSize() const;
bool search(const String&) const;
void searchCommon() const;
void findCopy(String&, String&, bool&);
};
然后在定义类中我有:
#pragma once
#include "String.h"
class Definition
{
private:
/*Private class embers*/
String word;
String** def;
int num_defs = 0;
public:
/*Constructors & destructor*/
Definition();
Definition(const Definition&);
~Definition();
/*Overloading = += -= operator*/
Definition& operator=(const Definition&);
Definition& operator+=(const String&);
Definition& operator-=(int);
/*Overloading bool operators*/
bool operator==(const Definition&) const;
bool operator!=(const Definition&) const;
/*Overloading input & output operators*/
friend ostream& operator<<(ostream&, const Definition&);
friend istream& operator>>(istream&, Definition&);
/*Overloading index operators*/
String& operator[](int);
String operator[](int) const;
/*Sorting Functions*/
void sortDefinition();
void sortOrder();
void sortDupl();
const String& getWord() const;
const String& getDef(int) const;
int getNumDef() const;
};
现在我正在尝试通过复制字典来搜索公地,当为搜索到的定义找到复制定义时,它会将其从复制的字典中删除。但是我违反了数据,我猜其中一个索引或 getSize/getDefNum 没有返回正常值:
void Dictionary::searchCommon() const {
Dictionary temp;
temp = (*this);
for (int i = 0; i < num_words; ++i)
{
String comWord((*book)[i].getWord());
for (int j = 0; j < (*book)[i].getNumDef(); ++j)
{
String comDef((*book)[i].getDef(j));
bool flag = false;
temp.findCopy(comDef, comWord, flag);
if (flag)
{
cout << comWord << endl;
cout << comDef << endl << "-----------------------------------------------" << endl;
}
}
}
}
void Dictionary::findCopy(String& comDef, String& comWord, bool& flag) {
for (int i = 0; i < num_words; i++)
{
for (int j = 0; j < (*book)[i].getNumDef(); j++)
{
if (comDef == (*book)[i].getDef(j) && comWord != ((*book)[i].getWord()))
{
cout << (*book)[i].getWord();
(*book)[i] -= j;
flag = true;
}
}
}
}
帮忙吗?
编辑:这是项目,如果有人可以在他的调试器中检查它,那就太好了: https://github.com/adamorad/Dictionary.git