Подкласс должен завершить родовые типы. Вектор может содержать только объекты типа A
, а не произвольные векторы.
Теперь, почему вы строите объект, содержащий себя, я не знаю. Но есть причины для этого. Например, для модульного тестирования, чтобы убедиться, что алгоритм способен обрабатывать коллекции, содержащие циклы. Наивный алгоритм, вероятно, попадет в бесконечный цикл, поэтому не пройдёт модульный тест.