Виртуальные методы с++

деталь, механизм, изделие, узел;

  1. Определить иерархию классов (в соответствии с вариантом).
  2. Определить в классе статическую компоненту - указатель на начало связанного списка
    объектов и статическую функцию для просмотра списка.
  3. Реализовать классы.
  4. Написать демонстрационную программу, в которой создаются объекты различных классов
    и помещаются в список, после чего список просматривается.
  5. Сделать соответствующие методы не виртуальными и посмотреть, что будет.
  6. Реализовать вариант, когда объект добавляется в список при создании, т.е. в конструкторе.
    Методические указания.
  7. Для определения иерархии классов связать отношением наследования классы заданного
    варианта. Из перечисленных классов выбрать один, который будет стоять во главе иерархии. Это
    абстрактный класс.
  8. Определить в классах все необходимые конструкторы и деструктор.
  9. Поля класса специфицировать как protected.
  10. Пример определения статических компонентов:
    static person* begin; // указатель на начало списка
    static void print(); // просмотр списка
  11. Статическое поле инициализировать вне определения класса, в глобальной области.
  12. Для добавления объекта в список предусмотреть метод класса, т.е. объект сам добавляет
    себя в список. Например, a.Add()  объект a добавляет себя в список.
    Включение объекта в список можно выполнять при создании объекта, т.е. поместить
    операторы включения в конструктор. В случае иерархии классов, включение объекта в список
    должен выполнять только конструктор базового класса. Вы должны продемонстрировать оба этих
    способа.
  13. Список просматривать путем вызова виртуального метода Show каждого объекта.
  14. Статический метод просмотра списка вызывать не через объект, а через класс.

В чем именно проблема?
Что пробовали делать, что получилось, что не получилось?

Вот такая часть кода есть.Как сделать,чтобы добавлялись объекты через конструктор класса? И как просматривать список путем вызова виртуального метода Show каждого объекта?

#include <iostream>
#include <string>
using namespace std;



class mehanizm
{
protected:
    string name;
    int massa;
    float prise;
    mehanizm(int a);
    ~mehanizm();
};

class vyzl : public mehanizm
{
protected:
    int codediv;
    int numsubs;
public:
    void set();
    void get();
};

class detal : public mehanizm
{
protected:
    int massaeng;
    string type;
public:
    void set();
    void get();
};

class vurib : public mehanizm
{
protected:
    int massaemp;
    string material;
public:
    void set();
    void get();
};


mehanizm::mehanizm()
{
    name = "Mayatnik";
    massa = 22;
    prise = 3102.71;
}

mehanizm::~mehanizm()
{
    cout << "Deliting information..." << this << endl;
}
void vyzl::set()
{
    cout << "Vyzl" << endl;
    cout << "name: "; cin >> name;
    cout << "Massa: "; cin >> massa;
    cout << "prise: "; cin >> prise;
    cout << "Division code: "; cin >> codediv;
    cout << "Subs number: "; cin >> numsubs;
    cout << endl;
}

void vyzl::get()

{
    cout << "Vyzl" << endl;
    cout << name << endl;
    cout << massa << endl;
    cout << prise << endl;
    cout << codediv << endl;
    cout << numsubs << endl;
    for (int i = 0; i < 100; i++)
    {
        cout << "_";
    }
    cout << endl;
}

void detal::set()
{
    cout << "Detal" << endl;
    cout << "name: "; cin >> name;
    cout << "Massa: "; cin >> massa;
    cout << "prise: "; cin >> prise;
    cout << "Maassa detali: "; cin >> massaeng;
    cout << endl;
}
void detal::get()
{
    cout << "Detal" << endl;
    cout << name << endl;
    cout << massa << endl;
    cout << prise << endl;
    cout << massaeng << endl;
    for (int i = 0; i < 100; i++)
    {
        cout << "_";
    }
    cout << endl;
}
void vurib::set()
{
    cout << "Vurib" << endl;
    cout << "Name: "; cin >> name;
    cout << "Massa: "; cin >> massa;
    cout << "Prise: "; cin >> prise;
    cout << "Massa vuroby: "; cin >> massaemp;
    cout << endl;
}
void vurib::get()
{
    cout << "Employee" << endl;
    cout << name << endl;
    cout << massa << endl;
    cout << prise << endl;
    cout << massaemp << endl;
    for (int i = 0; i < 100; i++)
    {
        cout << "_";
    }
    cout << endl;
}

struct list
{

    int A;
    list* next;


};
void Add() {

};



static list* begin;
static list* end;

int main()
{




    vyzl* one = new vyzl();
    one->get();
    one->set();
    one->get();

    detal* two = new detal();
    two->set();
    two->get();

    vurib* tree = new vurib();
    tree->set();
    tree->get();


    delete one;
    delete two;
    delete tree;
    system("pause");
    return 0;
}

Добавить этот метод в базовом классе и в наследниках переопределять (выводить их поля).
В цикле проходить список и вызывать у каждого объекта этот метод. В списке хранить указатели на базовый класс.

см. например тему Массив машин, абстрактный класс Transport, грузоподъемность - #9 от пользователя AlexP

И базовым классом тут видимо изделие должно быть. А узел это видимо про узлы списка, по англ. Node.

Хотелось бы сам код увидеть,общие действия понятны

Ну … на халяву то вам никто не сделает.