Я использую shared_ptr
в качестве сборщика мусора для игрушечного языка, над которым я работаю, который компилируется в C ++. Мои объекты происходят из общего базового класса, описанного выше, что есть строки и числа, а также векторы и карты. Все на стороне c ++ передается в оболочке shared_ptr
s, поэтому мои контейнеры на самом деле содержат shared_ptr
, поэтому, когда они уничтожаются, их содержимое также уничтожается. Эта схема работает, но она выглядит немного странно в том, что контейнеры, являющиеся базовыми объектами, содержат shared_ptr
s. Есть ли недостаток в моем дизайне? Если да, какова будет альтернативная иерархия вокруг этого подхода?