Добрый день, уважаемые члены форума...

есть задание: создать базовый класс и реализовать в нем методы создания списка, вставка и удаление объекта из любой заданной позиции, очистка списка...от него создать класс потомок, в котором написать функцию сортировки, изменения порядка следования отрицательных элементов на обратный, изменения порядка следования положительных элементов на обратный...базовый класс я написал, даже попробовал сделать наследование, но не понятно, как можно использовать прописанный в базовом классе список в потомке, можно ли унаследовать и использовать объекты и поля protected, объявленные в базовом классе в потомке...
Если кому не трудно, напишите пожалуйста одну функцию, реализованную в классе-потомке, чтобы я смог понять дальнейший принцип работы...ведь тем, кто знает, это не составит особого труда, а мне очень сильно поможет...))) без этого остальные лабы я просто не сделаю...)) Заранее огромное спасибо..))
Код:
#include <iostream>
#include <conio.h>
using namespace std;
class List
{
protected:
int a;
List *next;
List *prev;
public:
List () {a=0;}
void Postroenie(int v);
void Vivod ();
void NewEl (int v, int f);
void Del (int v);
void DelSp ();
}*start, *last, *p, *pl;
void List::Postroenie(int v)
{
if (start==NULL ) {
start=new List;
start->a=v;
start->prev=NULL;
start->next=NULL;
last=start;
}
else{
p=new List;
p->a=v;
p->next=NULL;
p->prev=last;
last->next=p;
last=p;
}
}
void List::NewEl(int v, int f)
{
p=start;
do { p=p->next;
v--;
} while (v!=1);
List *q;
q=new List;
q->a=f;
q->next=(p->prev)->next;
q->prev=p->prev;
(p->prev)->next=q;
p->prev=q;
}
void List::Del(int v)
{
p=start;
do { p=p->next;
v--;
} while (v!=1);
if (p->next!=NULL)
{
(p->next)->prev = p->prev;
(p->prev)->next = p->next; delete p;
}
else
{
(p->prev)->next = NULL; last = last->prev; delete p;}
}
void List::DelSp()
{
List *q,*q1;
q = start; q1 = (*q).next;
while (q1!=NULL)
{
q = q1; q1 = q1->next; delete q;
}
delete start; start = last = NULL;
}
void List::Vivod()
{
p=start;
cout<<"Список: ";
do {
cout<<" "<<p->a;
p=p->next;
} while (p!=0);
cout<<endl;
}
class Potomok: protected List//-----------------> НАСЛЕДОВАНИЕ
{
public:
void Sort ();
void SortOtr ();
void SortPol ();
}*nsp, *ksp;
void main ()
{
setlocale (0,"");
cout<<"1 - Создание списка\n";
cout<<"2 - Просмотр списка\n";
cout<<"3 - Добавление нового элемента\n";
cout<<"4 - Удаление определенного элемента\n";
cout<<"5 - Сортировка списка\n";
cout<<"6 - Обратный порядок отрицательных членов\n";
cout<<"7 - Обратный порядок положительных членов\n";
cout<<"8 - Удаление списка\n";
cout<<"9 - Выход\n\n";
int n, count=0;
int poz, punkt;
List A;
do{
cout<<"\nВыберите необходимый пункт меню\n";
cin>>punkt;
switch (punkt){
case 1: cout<<"Введите значения элементов\n";
do {
cin>>n;
A.Postroenie(n);
++count;
} while (n!=0);
break;
case 2: A.Vivod();
break;
case 3: do {
cout<<"\nВведите позицию вхождения нового элемента\n";
cin>>poz;
} while (poz>count);
cout<<"\nВведите новый элемент\n";
cin>>n;
A.NewEl(poz,n);
break;
case 4: do{
cout<<"\nВыберети позицию удаляемого объекта\n";
cin>>poz;
} while (poz>count);
A.Del(poz);
break;
case 8: A.DelSp();
break;
case 9: cout<<"Выход\n";
break;
default: cout<<"Не верно введен номер пункта\n";
}}while (punkt!=9);
getch();
}