-2
私のコードは、以下の私の問題の説明だけでなく、次のとおりです。エラー:代入の左オペランドとして左辺値が必要です。tail-> getnext()= a;
class node
{
public:
node(float val1, node* next1)
: val(val1), next(next1) { }
node(int val1)
:val(val1), next(NULL) { }
node() { }
float getvalue() { return val;}
node* getnext() { return next;}
private:
float val;
node* next;
};
class linkedlist
{ public:
linkedlist(): head(NULL), tail(NULL) { }
node* addnode(node* a)
{
tail->getnext() = a;
tail = a;
}
float printlist()
{
node* tmp = head;
while(tmp!=NULL)
{
std::cout << tmp->getvalue() << std::endl;
tmp = tmp->getnext();
}
}
private :
node* head;
node* tail;
};
int main()
{
}
誰も私がエラーを修正する助けてもらえますか?私はちょうどtail->next = a
を設定したいが、次に は私的な価値であるので、私はこれをすることができない。 tail->getnext() = a
を使用していますが、エラーが発生します。エラーが発生するのはなぜですか? ありがとう!
:これを行うには
は、あなたが変更可能なL値であるポインタに参照を返すことがあります。無関係なものをすべて削除してください。 –
'getnext()'は 'next'のコピーを返しますので、代入は元の値を変更できません:' node *&getnext(){return next;} '。 –
リチャード:はい、それは動作します。ありがとう! – lul