Я реализовал указатели подсчета ссылок (в примере это называется SP
), и у меня возникли проблемы с полиморфизмом, которых, по-моему, быть не должно.
В следующем коде:
SP<BaseClass> foo()
{
// Some logic...
SP<DerivedClass> retPtr = new DerivedClass();
return retPtr;
}
DerivedClass
наследуется от BaseClass
. С обычными указателями это должно сработать, но с умными указателями написано "cannot convert from 'SP<T>' to 'const SP<T>&"
, и я думаю, что это относится к конструктору копирования интеллектуального указателя.
Как мне разрешить этот тип полиморфизма с указателем подсчета ссылок?
Я был бы признателен за примеры кода, потому что, очевидно, я делаю что-то не так, если у меня возникла эта проблема.
PS: Пожалуйста, не говорите мне использовать стандартную библиотеку с умными указателями, потому что в данный момент это невозможно.