2012-02-20 15 views
0

私のクラス単純な抽象データ型のリンクリストに

class Product 
{ 
... 
}; 

class Perishable : public : Product 
{ 
public: 
int getday(); 

}; 

私は一緒に両方の生鮮および製品オブジェクトのコレクションが含まれており、リンクリストによってそれを行うことを期待したいです。通常、リンクリストのための

我々は

class linkedlist 
{ 
      struct List 
      { 
      int item; 
      ListNode* next; 
      } 
      //.... all the functions 
}; 

のようなものを持っているが、私は項目に格納するデータはint型ではなく、製品や生鮮のいずれか、どのように私は実装しないので、私はここに問題を抱えていますそれはリンクされたリストとして?

+0

本当にあなた自身のリンクリストが必要ですか? STLの 'std :: vector 'を使ってください。 –

答えて

1

Product*をアイテムとしてリンクリストに格納することができます。 virtualメソッドを基本クラスProductに追加する必要があります。これは、このポインタが指すオブジェクトの実際のタイプに応じて実行時に適切なメソッドにディスパッチされます。

+0

私はこれは適切ではないと思う一般的なプログラミング(courtsey:アレックスStepanov)は、それを行うためのものであり、STLはあなたが上記の仮想デストラクタがないので、OOのものを持っていないテンプレートに基づいています。現在、C++のデータ構造上の問題は、オブジェクト指向ではなくジェネリックプログラミングの問題です。 – Yavar

1

テンプレートが必要です。 C++のテンプレートは汎用プログラミングをサポートします。クラスLinkedListの前にテンプレートを宣言した後、int項目をT項目と置き換えることができます。ここで、Tはプレースホルダであり、オブジェクトのインスタンス化の方法に応じて適切なデータ型(カスタムまたはプリミティブ)に置き換えられます。

関連する問題