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

    −15

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    template <typename T> std::list<T*> GetComponents(){
            std::list<T*> list;
            std::list<Component_ptr>::iterator iter=_components.begin();
            while(iter!=_components.end()){
                T* element=dynamic_cast<T*>(iter->get());
                if(element!=NULL){
                    list.push_back(element);
                }
                iter++;
            }
            return list;
        }
    
        template <typename T> T* GetComponent(){
            std::list<T*> list=GetComponents<T>();
            if(list.size()>0){
                return list.front();
            }
            return NULL;
        }

    Зато как круто выглядит -
    AnyComponent *component = GetComponent<AnyComponent>();
    А теперь его как в старой доброй сишке на NULL проверить?

    Запостил: Pythoner, 11 Февраля 2017

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

    • component == NULL
      Ответить
    • А что ты предлагаешь? Тут либо optional<T&>, либо T*, что один хуй по сути.
      Ответить
      • Ну можно ещё исключение кинуть, если компонент там по-любому должен быть.
        Ответить
      • Ты что такое заумное сказал?
        Ответить
    • можешь возвращать DEADBEEF и проверять против него же, если NULL не нравится.
      Ответить
    • Можно угадать имя функции с декорированием и указать как внешнюю в сишном файле, но придется знать тип с которым инстанцируется шаблон.
      Ответить
      • если он вообще инстанцируется и не инлайнится
        Ответить
        • Здрасте, как не инстанцируется - если вариант функции с таким типом нигде в части с++ не применяется, а значит не появится, то смысл его вызывать из сишной части?
          Ответить
          • Лол, перечитай топик ещё раз. Там никто не собирался вызывать этот шаблон из няшной...
            Ответить
            • Я по своему, развратно, понял ТСа - пардон.
              Ответить
    • показать все, что скрытоvanished
      Ответить

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