std::queue<mytemplate> - почему не работает?

Тема в разделе "LANGS.C", создана пользователем Antolflash, 1 июн 2011.

  1. Antolflash

    Antolflash New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2008
    Сообщения:
    167
    Код (Text):
    1. #include <queue>
    2. template <class te>
    3. class temple
    4. {
    5.     te a1;
    6. public:
    7.     void any();
    8. };
    9.  
    10. template <class te>
    11. inline void temple<te>::any()
    12. {
    13.     std::queue<te> Q0;
    14.     te val;
    15.     Q0.push(0);
    16.     val = Q0.pop(); // error C2440: '=' : cannot convert from 'void' to 'unsigned int'
    17. }
     
  2. Antolflash

    Antolflash New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2008
    Сообщения:
    167
    Ну и затем, понятно
    Код (Text):
    1. int main()
    2. {
    3.     temple<unsigned int> obj1;
    4.     obj1.any();
    5.     return 0;
    6. }
     
  3. Antolflash

    Antolflash New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2008
    Сообщения:
    167
    Прошу прощения, мой фейл.
    Код (Text):
    1. void pop( );
    Ассемблер довёл.
    Надо front использовать.
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Antolflash

    Если бы кое-кто читал умные книги, то этот кое-кто даже смог бы найти обоснование одного умного дяди, почему pop и front сделаны двумя разными функциями ;)
     
  5. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    _DEN_
    это и без умных дядей очевидно. хотя бы потому что иногда надо узнать делать pop или нет
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    spa

    Речь идет об обосновании того, что нельзя написать pop, возвращающий выкинутый элемент, безопасным с точки зрения исключений способом.