У меня есть контейнер, который я бы хотел заполнить указателями класса C. Однако я бы предпочел использовать Boost shared_ptr, чем тупые указатели.Размещение интеллектуальных указателей в контейнере STL
Я объявляю контейнер как container<C*>
, но получаю эту ошибку:
no known conversion for argument 1 from ‘boost::shared_ptr<C>’ to ‘C* const&’
Как я должен объявить контейнер принять повышение общих PTRS? Если это возможно, я бы хотел, чтобы он тоже принимал немые указатели.
UPDATE: Из ответов, кажется, что контейнер действительно должен быть объявлен принимать смарт-указатели, это не может быть сделано, чтобы принять как умные или тупые указатели. То есть, нет принуждения от умных к немым или наоборот. Это верно?
Возможно, вам понадобится контейнер Boost ptr. – chris
'container>' ... это то, что вы ищете? Если нет, можете ли вы показать какой-то код того, что вы пытаетесь сделать. –
Praetorian
Создайте [MCVE] (http://stackoverflow.com/help/mcve), сообщения об ошибках без кода, вызывающего их, как известно, бесполезны. –