К сожалению, вы просто изобретаете велосипед. Измените свой подход, все, что pointer-stuff может фактически управляться автоматически.
Если возможно, используйте состав . Пусть объект class A
содержит объект class B
, который будет содержать объект class C
. Этот очевидный и простой подход может сэкономить вам огромное количество времени и сделать структуру вашего приложения лучше и «чище».
Если к вашим классам можно обращаться с объектами одного типа (например, если они совместно используют один и тот же интерфейс), то выведите ваш C
из B
и получите B
из A
. Сразу после этого вам придется подумать об их общем интерфейсе - с точки зрения virtual functions
в вашем class A
, который действует как базовый класс. Это действительно сложный момент, но как только вы привыкнете планировать свои интерфейсы таким образом, вы просто не сможете думать о чем-то другом.
Также отметим, что если даже кажется, что "ваша текущая проблема не может быть смоделирована с помощью динамического полиморфизма" , или вы "просто не можете придумать правильный интерфейс", Попробуйте снова. И не пытайтесь придумывать новые способы построения программной архитектуры, а просто привыкайте к уже существующим.