Für dieses Projekt gibt es eine verknüpfte Liste der Informationen einer Person, die aus Vornamen, Nachnamen, einer ganzen Zahl und einem Doppel besteht. Es sieht so aus:C++ Wie man Informationen vom Knoten mit mehreren Parametern abruft
void DonorList::addDonor(string firstName, string lastName, int memberID, double donation)
{
Node *pNode = new Node(DonorType(firstName, lastName, memberID, donation), nullptr);
if (first == nullptr)
{
first = pNode;
last = pNode;
}
else
{
last->setLink(pNode);
last = pNode;
}
}
Er erbt von der DonorType-Klasse. Was mich betrifft, ist, wie ich nur einen Parameter von den 4 in einer Suchfunktion zusammenbringen kann. Ich habe versucht, die folgenden:
bool DonorList::searchID(int memberNumber)
{
Node *current = first;
bool found = false;
while (current != nullptr || !found)
{
if (current->getDonor() == memberNumber)
{
found = true;
}
}
return found;
}
Aber natürlich ist es nicht funktioniert, weil ich nicht vergleichen kann strom-> getDonor() (der Knoten vom Typ DonorType) zu memberNumber (die ein int). Wenn es keine Hilfe ist, ist dies die Node-Klasse in der Header-Datei:
class Node
{
public:
Node(){}
Node(const DonorType& theDonor, Node *theLink)
: donor(theDonor), link(theLink){}
Node* getLink() const { return link; }
DonorType getDonor() const { return donor; }
void setDonor(const DonorType& theDonor)
{ donor = theDonor; }
void setLink(Node *theLink) { link = theLink; }
private:
DonorType donor;
Node *link; //pointer that points to next node
};
So ziemlich im Moment bin ich sehr verloren, wie ich die memberNumber Informationen in den Knoten, um eine Suche zugreifen kann Funktion zu tun . Jede Hilfe würde sehr geschätzt werden, danke! Dieses Projekt hat tatsächlich eine Menge mehr Dateien, aber ich habe mein Bestes getan, um das einzubeziehen, was meiner Meinung nach für das Problem relevant ist.
Edit: Hier ist die DonorTypen Klasse:
class DonorType : public MemberType
{
public:
DonorType();
DonorType(const string& firstName, const string& lastName, const int& memberNumber, const double& donationAmount);
void setDonorInfo(string &firstName, string &lastName, int &memberNumber, double &donationAmount);
void setAmountDonated(double &donationAmount);
double getAmountDonated() const;
void printDonor() const;
void printDonation() const;
~DonorType();
private:
double donation;
};
Edit2: Member Klasse
class MemberType
{
public:
MemberType();
MemberType(const string& firstName, const string& lastName, const int& memberNumber);
void setMemberInfo(const string& firstName, const string& lastName, const int& memberNumber);
string getFirstName() const;
string getLastName() const;
int getMembershipNo();
void printName() const;
void printMemberInfo() const;
~MemberType();
private:
string fname;
string lname;
int idnum;
};
wir die DonorType Klasse sehen müssen. Obwohl das seltsam scheint, dass DonorType den Namen des Spenders, die ID usw. enthält – pm100
Es gibt nichts im gezeigten Code, der "von der DonorType-Klasse erbt", wie Sie behaupten. Sieht so aus, als bestünde ein Mangel an einem guten Verständnis der grundlegenden C++ - Konzepte. Dies ist nicht etwas, das im Rahmen einer kurzen Antwort auf stackoverflow.com behandelt werden kann. Um in der Lage zu sein, eine klare Frage zu kommunizieren, die beantwortbar ist und in der Lage ist, unter Verwendung der richtigen Terminologie und allgemeiner Begriffe zu kommunizieren. –
und warum verwenden Sie nicht std :: list – pm100