Я не могу получить std :: tr1 :: shared_ptr для моего проекта WinMobile, поскольку STL для WinCE поддерживается другой командой в Microsoft :( aarrgh ...
Кто-нибудь работал с другими потокобезопасными интеллектуальными указателями с подсчетом ссылок? На самом деле я использую яшму, что, кажется, неплохо.
Большое спасибо.





Повышение умных указателей. В частности boost :: shared_ptr. Я почти уверен, что они поддерживаются вашей платформой. Отсюда tr1 :: shared_ptr.
yasper :: ptr, похоже, похож на Boost Smart Pointers, хотя shared_ptr, конечно, имеет больше функций.
В скудной документации yasper :: ptr появляется пример присвоения указателя:
//preferred
ptr<SomeClass> p1(new SomeClass);
//less safe
ptr<SomeClass> p2 = new SomeClass;
Почему второй вариант «менее безопасен»?
это менее безопасно, потому что это неявное преобразование необработанного указателя в шаблон ptr <>. рассмотрим функцию void (ptr <foo> f) {} foo * p = new foo; функция (p); p-> bar = 10; // упс
Большое спасибо за Ваш ответ. Это означает, что p-> bar может быть недопустимым, поскольку адрес p был выпущен интеллектуальным указателем при завершении области действия функции?
Вы смотрели STLPort или Библиотека Dinkum TR1? Оба имеют гораздо более полный порт для CE.
Да, я думаю об использовании shared_ptr, но в Visual C++ 2008 его нет под std :: tr1 для сборок WinCE, так что, может быть, я посмотрю эти альтернативы, спасибо. Я доволен yasper :: ptr, но сомневаюсь, что он потокобезопасен.
Я также рекомендую boost :: shared_ptr. Вы можете сделать то, что я сделал для библиотеки, и использовать #define для переключения между std :: tr1 :: shared_ptr и boost :: shared_ptr, в зависимости от возможностей компилятора. Таким образом, ваш код не нужно [сильно] изменять, если / когда команда CE добавит поддержку tr1. Просто мой 2с.
Опять же, мне нужно было сначала проверить StackOverflow. Установил VS2008 SP1 с большими надеждами, но std :: shared_ptr все еще не существует. Что за...?!? MS нигде не заявляет, что Windows CE этого не получит. Они должны гореть медленно и ровно. Или на самом деле они должны присоединяться к командам, чтобы у нас была только одна цепочка инструментов. Проблема в том, что они могут себе это позволить, и боль наша, а не их. : / Спасибо, ТАК, что уточнили технические детали. Очередной раз.