Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> умные указатели и неочень. operator ==, сравнить shared_ptr<Foo> и Foo* 
:(
    Опции темы
varnie
Дата 21.7.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.9.2007

Репутация: 0
Всего: 0



привет всем.

пускай имеется семпл:
Код

class Foo;
class Bar{
  boost::shared_ptr<Foo> FooPtr;
public:
  //...
  boost::shared_ptr<Foo> getFoo() const{
    return FooPtr;
  }
};
class Foo{
  boost::shared_ptr<Bar> BarPtr;
public:
  //...
  void f() const{
      if (this != (BarPtr->getFoo()).get()){
        //do smth useful
     }
  }
};

насколько оправдана замена реализации void Foo::f() const на следующую: 
Код

void Foo::f() const{
  if ( this != &*(BarPtr->getFoo()) ){
    //do smth useful
  }
}

? т.е. мне надобно сравнить голый указатель на Foo и сторонний boost::shared_ptr<Foo>. какой из этих 2х вариантов предпочтительнее и правильнее? и почему не предусмотрено неявное сравнение указателей, что-то типа:
Код

if (this != BarPtr->getFoo() ){
    //do smth useful
}

к каким фатальным ошибкам разрешение подобного могло бы привести? спасибо за инфу.
PM MAIL   Вверх
vinter
Дата 21.7.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(varnie @  21.7.2008,  19:50 Найти цитируемый пост)
насколько оправдана замена реализации void Foo::f() const на следующую: 

насколько оправдана замена шила на мыло?
Цитата(varnie @  21.7.2008,  19:50 Найти цитируемый пост)
и почему не предусмотрено неявное сравнение указателей, что-то типа:

а зачем?  это будет приводить к ошибкам, это выглядит как сравнение двух просns[ указателей, хотя на деле это не так.


--------------------
Мой блог
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1122 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.