2012-02-20 3 views
0

моих классыПростого абстрактного типа данных связанного список

class Product 
{ 
... 
}; 

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

}; 

Я хочу, чтобы содержать коллекцию как скоропортящегося и продукт объекта вместе и надеюсь сделать это с помощью связанного списка.

Обычно для связанного списка у нас есть что-то вроде

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

, но у меня есть проблема здесь, так как данные я хочу хранить в пункте не является INT, но либо продукт или скоропортящиеся, как я реализовать это как связанный список?

+0

Вам действительно нужен ваш собственный список? Просто используйте 'std :: vector ' из STL. –

ответ

1

Вы можете сохранить Product* как элемент в связанном списке. Вы должны добавить virtual методы базовому классу Product, который будет отправлен соответствующему методу во время выполнения в зависимости от фактического типа объекта, на который указывает этот указатель.

+0

Я не думаю, что это было бы уместно, так как Generic Programming (courtsey: Alex Stepanov) предназначается для этого, и STL основан на шаблонах, которые не имеют OO-материалов, о которых вы упомянули выше, потому что нет виртуальных деструкторов. Теперь я чувствую, что любая проблема структуры данных в C++ - это больше общего материала программирования, а не Object Oriented. – Yavar

1

Вам нужны шаблоны. Шаблоны в C++ поддерживают общее программирование. После объявления шаблона перед классом LinkedList вы можете заменить свой объект int тегом T, где T является владельцем места и будет заменен соответствующим типом данных (обычным или примитивным) в зависимости от того, как вы создаете экземпляр своего объекта.