Ich habe ein Problem mit der Ausrichtung von Operator [] und Operator =. Ich kann nicht verstehen, Funktion LinkedList LinkedList :: Operator = (const int & n) genau zu schreiben. es sieht nicht aus wie ein Operator = das ich durchgemacht habe. Bitte helfen Sie mir, die Natur davon zu verstehen (zusammen mit dem Code wie möglich). Vielen Dank!Wie operator [] mit operator =?
Datei .h
class LinkedList
{
private:
Node* pHead;
Node* pTail;
int curN;
public:
int& operator[](const int& i);
LinkedList operator = (const int& n);//
};
Datei CPP
int& LinkedList::operator[](const int& i)
{
int tmp;
if (i < 0)
tmp = 0;
else if (i > this->curN)
tmp = this->curN - 1;
else
tmp = i;
int count = 0;
Node* pNode = this->pHead;
while (count < tmp)
{
count++;
pNode = pNode->pNext;
}
return pNode->_data;
}
LinkedList LinkedList::operator=(const int& n)
{
//Problem here
}
Und Datei main.cpp
int main()
{
srand(1234);
LinkedList l;
l[-1] = 9000;
l[4] = 2000;
l[100] = 10000;
cout << l << endl;
}
Nebenbei, overloading 'operator []' auf einer verknüpften Liste ist keine gute Design-Idee. Die meisten Leute denken, dass 'operator []' einen konstanten Zeitzugriff auf etwas bietet, und im Fall der verknüpften Liste bietet es einen linearen Zeitzugriff. – Sean
Operator '=' ist völlig unabhängig. Ihr Code verwendet es nicht und würde so funktionieren, wie es ist. – dasblinkenlight
Sollte es funktionieren? Wird 'operator []' ** ** immer einen gültigen Link finden und seine Daten zurückgeben? – StoryTeller