У меня проблема с выравниванием оператора [] и оператора =. Я не могу понять, чтобы написать функцию LinkedList LinkedList :: operator = (const int & n) точно. это не похоже на какой-либо оператор =, с которым я познакомился. Пожалуйста, помогите мне разобраться в его природе (вместе с кодом как можно скорее). Спасибо большое!Как использовать оператор [] с оператором =?
файл .h
class LinkedList
{
private:
Node* pHead;
Node* pTail;
int curN;
public:
int& operator[](const int& i);
LinkedList operator = (const int& n);//
};
файл .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
}
и файл main.cpp
int main()
{
srand(1234);
LinkedList l;
l[-1] = 9000;
l[4] = 2000;
l[100] = 10000;
cout << l << endl;
}
Как в стороне, перегрузка 'operator []' в связанном списке не является отличной дизайнерской идеей. Большинство людей думают о 'operator []' как о предоставлении постоянного доступа к чему-либо, а в случае вашего связанного списка он обеспечивает линейный доступ времени. – Sean
Оператор '=' полностью независим. Ваш код не использует его и будет работать как есть. – dasblinkenlight
Должно ли это работать? Является ли 'operator []' ** всегда ** собирающимся найти правильную ссылку и вернуть ее данные? – StoryTeller