1. C++ / Говнокод #1858

    +59.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    void someMethod(const std::string& name,  std::autp_ptr<SomeClass> p);
    
    {
        ...
        std::auto_ptr<SomeClass> p(new SomeClass());
        someMethod(p->GetName(), p);
        ...
    }

    Самое забавное, что при определенных условиях оно может работать.

    Запостил: Lexey, 17 Сентября 2009

    Комментарии (6) RSS

    • если p->GetName() - левосторонняя ф-я то почему бы и нет

      какая-то рекуррсия вроде не особо говнистая
      Ответить
      • Тут не рекурсии. Первая строчка - это просто декларация метода (чтобы видно было сигнатуру). А вызов идет из другого места.
        Ответить
    • auto_ptr по значению - это круто!
      Ответить
      • а в чем проблема?
        интерфейс нормальный - использование неправильное.
        Ответить
        • а в том, что копий у auto_ptr быть не может. И поэтому когда someMethod выполнится - p обнулится. Получается эффект черной дыры
          Ответить
          • Про sink-методы ты видимо не слышал. ;)
            Это как раз тот эффект, который и требуется. В оригинале someMethod - это insert из boost::ptr_map
            Ответить

    Добавить комментарий