2016-07-07 4 views
-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を使用していますが、エラーが発生します。エラーが発生するのはなぜですか? ありがとう!

+0

:これを行うには

は、あなたが変更可能なL値であるポインタに参照を返すことがあります。無関係なものをすべて削除してください。 –

+0

'getnext()'は 'next'のコピーを返しますので、代入は元の値を変更できません:' node *&getnext(){return next;} '。 –

+0

リチャード:はい、それは動作します。ありがとう! – lul

答えて

1

node::genNext()は、R値であるため、何も代入することはできません。あなたは[MCVE]にそれを軽減してもらえ

node*& getnext() { return next;} 
+2

ありがとう!できます! – lul

関連する問題