Доброго времени суток!
Возникла тупиковая ситуация с QSharedPointer, которую, в принципе, я знаю как обойти, но хотелось бы понять почему не работает.
Итак, что мне нужно было: У меня есть класс Base и класс Child. Мне нужно из объекта класса Child иметь возможность обращаться к объекту класса Base, с проверкой существования объекта Base. Отмечу, что мы говорим тут не про наследование. С одним объектом Base может быть связано несколько объектов Child. Оба класса не являются наследниками QObject, поэтому использовать другие типы умных указателей не вариант - они все требуют наследоваться от QObject.
Как я решил задачу: Создал вектор указателей (QSharedPointer) на классы Base, и передавал в конструктор классу Child необходимый указатель. Причем передавал по значению.
Что не так: При удалении первого объекта Child, удаляется и объект базового класса Base. Я ожидал совсем другого поведения от умного указателя. Хотя бы, чтобы он как-то понимал, что он не один ссылается на объект Base, и не уничтожал его при удалении объекта Child.
Как можно решить эту проблему: Тут все просто, достаточно передавать в объект Child указатель на указатель, т.е. QSharedPointer<>*, но ведь это масло масляное - что-то тут не так.
Хотелось бы услышать, что я не так понимаю в этих умных указателях и как дальше жить