私は、演算子[]と演算子=のアライメントに問題があります。 LinkedList LinkedList :: operator =(const int & n)関数を書くのはわかりません。私が会ったオペレータのようには見えません。 可能な限りコードの性質を理解してください。ありがとうございました!operator []とoperator =?を使用する方法
ファイルの.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