EI'm выполняет проект по классу структуры данных, который должен реализовывать различные типы структур.
Такие, как массивы, связанные, двунаправленные, круговые и т. Д.
Каждая из этих структур использует тип, стек, очередь или список.Наследие выбранных функций
Пример:
VectorStructure.h
template<typename T>
class VectorStructure{
public:
int addOnPosition(T element, int pos);
int addOnBeginning(T element);
int add(T element);
int addElementOrdered(T element);
T removeFromPos(int pos);
T removeFromBeginning();
T remove();
T removeElement(T element);
}
Каждая реализация этих типов содержит код в точности так, как другие.
Стек: представляет собой структуру LIFO, использует только методы: add (элемент T) и remove();
Очередь: является структурой FIFO, использует только методы: add (элемент T) и removeFromBeginning();
Список: динамический массив, может использовать любой из этих методов и некоторые дополнительные функции.
Моя идея: Реализовать все эти функции в базовом классе и использовать эти типы только для необходимых методов базы. Я думал, что могу использовать наследование, но тогда стек мог получить доступ к недопустимой функции из базового класса, так как ее «дочерний» Также думал, что я могу использовать абстрактный класс, но для компиляции я должен реализовать все методы, содержащиеся в абстрактном класс.
типов (они только примеры, есть некоторые другие методы, которые являются одинаковыми для всех типов):
list.h
Stack.h
template<typename T>
class Stack{
public:
int add(T element);
T remove();
Queue .h
template<typename T>
class Queue{
public:
int add(T element);
T removeFromBeginning();
Есть ли способ реализовать эту идею?
Смотрите также: http://stackoverflow.com/questions/3873802/what-are-containers-adapters-c В принципе, есть контейнеры последовательность (вектор, Deque, список, и т.д.) и адаптеры (стек, очередь и т. д.). Например, стек использует любой контейнер последовательности для обеспечения интерфейса LIFO и т. Д. –
да, я думаю, что это может сработать! в этом случае, где переменные должны быть инстанцированы, каждый в своем классе или на базовом контейнере? –
ok nvm, я думаю, это то, что мне нужно спасибо вам большое! –