2017-03-25 19 views
-3

私のクラスのためにopertor =を作る必要があります。問題は、そのような関数でクラスxからその構造体を使用するにはどうすればいいですか?Operator = - クラス内の構造体(SingleLinkedList)

template<typename Key, typename Info> 
    void Sequence<Key,Info>::operator=(const Sequence &x) 
    { 
     element *ptr=head; 
     while(ptr)//deallocating memory 
     { 
      head=ptr->next; 
      delete[] ptr; 
      ptr=head; 
     } 
     x.element *ptr2;// <- it doesn't work - how can I make a ptr for structure of class x here? 
// rest of code 
. 
. 
. 
// 



    } 
+1

あなたの質問を宣言します問題が正確に何であるか説明しない。しかしながら、とにかく2つの大きな問題があります:1.) 'operator ='は '* this'への参照を返すべきです、なぜなら、それはしばしば他のコード、特に様々な標準コンテナによって期待されるからです。 2)コピー代入 'operator ='は、ほとんどの場合、コピー&スワップイディオムを使用して実装する必要があります。そしてもちろん、最初にこのすべてを行う必要はありません。単に 'std :: vector'や' std :: map'のような標準コンテナを使用してください。 –

+0

申し訳ありませんが、私の最初の投稿です。とにかく問題は、本当にxクラスの要素へのポインタを作ることができないということです。私は本当にそれを行う方法を知らない。それは私の研究のための実験室のプロジェクトの一部です。私の上司は、リストのために標準ライブラリを使用することはできないと言っています。C – Orzelke

答えて

0

xは、オブジェクトではありません(オブジェクトへの参照)。

headのメンバーにアクセスする場合は、x.headと書いてください。 doesnの
このメンバは、タイプelement*を持っているので、あなたは、変数

element* ptr2 = x.head; 

(私はあなたには、特に、構造物への導入をごもちろんそれ以前の部分を確認することをお勧めします。)

関連する問題