Как создать связный список?
1. Виртуальный деструктор тут нужен — ведь в списке будут вперемешку элементы разных классов.
2. Не видны два компонента, которые и делают список связным — указатель на следующий элемент (test* next) и указатель на голову (test* head = NULL).
3. В попытке скрыть реальную жизненную задачу — ведь СС не вещь в себе, а решает какую-то задачу вроде «держать список объектов в игре» — вы слишком уж напереименовывались.
Насколько я понимаю, виртуальный деструктор нужен только тогда, когда уничтожение производных и базового классов должны отличаться. У вас пока нет каких-либо выделений памяти или чего-то отличающегося, так что при использовании виртуального деструктора к производным классам добавиться пока что не нужный указатель на таблицу виртуальных функций.
Как вы хотите сделать ссылки на элементы списка статическими компонентами класса? Ссылки же должны быть разными, а статические переменные общие?
https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D1%8F%D...