Объявление

Collapse
No announcement yet.

string conversion to enum type

Collapse
X
 
  • Filter
  • Время
  • Show
Clear All
new posts

  • #46
    Таки нашел я это решение Вот модификация кода Z1024:

    [code]
    #define SEPARATOR ,
    #define NAMES C(defaultColor) C(red) C(green) C(blue)
    #define C(x) x SEPARATOR
    enum colors { NAMES NUMCOLORS };
    #undef C
    #undef SEPARATOR
    #define SEPARATOR ;


    colors getColor(const char* colorNameParam)
    {
    #define C3(theColor, colorName, colorString) if(strcmp(colorName,colorString)==0)return theColor //general case
    #define C(theColor) C3(theColor, #theColor,colorNameParam); //shorter form
    NAMES; //check every enum token
    return defaultColor;
    }
    [/code]

    Цвета задаем только в одном месте, и обработка этих значений автоматически генерируется внутри getColor
    git blame

    Comment


    • #47
      Сообщение от xelaz
      Вот только можно ли этот код еще улучшить, и найти такой макрос, чтобы одновременно можно было вести два списка: списка токенов в enum и список OPTION внутри функции?

      Т.е неплохо было бы одной серебряной пулей убивать сразу двух зайцев и задавать как новые значение enum, так и новый код который это значение тут же обрабатывает
      Да, с точки зрения красоты решения это несомненно шаг вперед ))) Два списка которые надо обновлять параллельно да еще и в разных местах - это очень плохо) Я тоже обдумывал как бы это реализовать, но в препроцессоре не силен, хотел было прикрутить шаблоны, но дело было вечером , хотелось спать и вообще лень ))

      Ц++ огромный язык )) сейчас сдавал онлайн тест для рекрутера на https://online.ikmnet.com/servlets/TestDeliveryServlet - это было нечто...
      Открытое MS VS 2005 и несколько chm книжек по С++ не сильно помогли думаю )))
      А еще этот гадский тест не сказал мне результата - результат будет знать тока тест-админ...
      LiveDoco - Live SQL Server database structure explorer and documentation tool

      Comment


      • #48
        Сообщение от Z1024
        хотел было прикрутить шаблоных
        ИМХО это сложнее Хотя интересно было бы увидеть решение в стиле Александреску

        сейчас сдавал онлайн тест для рекрутера на https://online.ikmnet.com/servlets/TestDeliveryServlet - это было нечто...
        Открытое MS VS 2005 и несколько chm книжек по С++ не сильно помогли думаю )))
        А еще этот гадский тест не сказал мне результата - результат будет знать тока тест-админ...
        Плохо когда рекрутеры тесты дают. Признак того, что работодатель не знает чем заняться и ничего не придумал разве что протестировать кандидата на знание всяких темных сторон языка. Я сколько ни проходил интервью, там где давали тесты - ни на одном не прошел, хотя в большинстве случаев думаю что сдавал эти тесты. А вот устроился только там на работу, где вообще тестов никаких не было - поговорили о том о сем ,что раньше делал, принцип как я это делал, и все - взяли. Уважаю такой подход. Но там действительно тим лидер голова был. На любую тему поговорить можно - от яхтинга до физики с электроникой, паяльник что говорится в руках умеет дежать и в схемах элеткронных разбирается.
        git blame

        Comment


        • #49
          Сообщение от xelaz
          Плохо когда рекрутеры тесты дают. Признак того, что работодатель не знает чем заняться
          Да это не рекрутер ))) это Macquarie Bank ))
          Я им на сайт ЦВ засунул - на всякий случай ) Вот мне тест и прислали )) Кстате на счет темных сторон языка - именно это этот тест и выясняет )))
          Какой то странный синтаксис хочут ))) я далеко не каждый день перегружаю new[] )))
          Но в принципе если не торопясь прочитать несколько хороших книжек по ЦПП и запомнить хотябы половину... То наверное можно более менее успешно его сдать )))
          LiveDoco - Live SQL Server database structure explorer and documentation tool

          Comment


          • #50
            я никогда тест не проходил по спп. ничего он не показывает. скорее наборот, те кто все знают будут только сумняцу вносить в обший стиль

            Comment


            • #51
              Сообщение от Z1024
              я далеко не каждый день перегружаю new[] )))
              Но в принципе если не торопясь прочитать несколько хороших книжек по ЦПП и запомнить хотябы половину... То наверное можно более менее успешно его сдать )))
              Помню читал один перл по С++ в книжке - переводчик явно уже не понимал что переводит, и выдал фразу про "новый оператор" который в контексте хотя и выглядел достаточно красиво, но смысл куда-то уходил в высшие сферы . Пришлось не один раз перечитывать этот абзац чтобы сообразить про что речь, пока все же не понял в чем был прикол . С тех пор стараюсь не читать книги по С++ на русском. Одно пожалуй исключение есть - это первое издание книги Страуструпа по С++ - вот там текст был переведен душевно очень, с юмором. ВО втором и уж тем более третьем издании такого уже не было.

              А перегрузка new - это сурово Такие вопросы Herb Sutter, автор нескольких книг серии с++ in depth и руководитель комитета по стандартизации С++ (кому как не ему лучше знать), очень хорошо освещает на своем сайте (Issue # 10).
              Если дают вопросы по темной или не однозначной стороне C++ - лучше читать этого автора. ИМХО конечно
              git blame

              Comment


              • #52
                Сообщение от Созерцающий
                я никогда тест не проходил по спп. ничего он не показывает. скорее наборот, те кто все знают будут только сумняцу вносить в обший стиль
                Все знают, что например, в Гугл такая расслабленная атмосфера, условия работы почти фантастические, то и дело в инет просачиваются фотки как они там живут. Но в гугл, на телефонном интервью требуют именно тесты . Боятся ли они всезнаек?
                git blame

                Comment


                • #53
                  Сообщение от xelaz
                  Помню читал один перл по С++ в книжке - переводчик явно уже не понимал что переводит, и выдал фразу про "новый оператор" который в контексте хотя и выглядел достаточно красиво, но смысл куда-то уходил в высшие сферы . Пришлось не один раз перечитывать этот абзац чтобы сообразить про что речь, пока все же не понял в чем был прикол . С тех пор стараюсь не читать книги по С++ на русском.
                  У меня аналогичная ситуация была с какой кто книжкой про UML Larman кажется автор ))). Я читал, переводил термины на английский буквально, там уже понимал о чем речь и дальше читал ))) Короче гиблое это дело - читать книжки в переводе ))) Но вот книжку GoF Design Patterns хорошо перевели - они оставили английские названия в скобках ну и русский перевод вобщем то вполне адекватен ))

                  А по C++ у меня куча e-books Herb Sutter - Exceptional C++ и More Exceptional C++ в том числе. Просто их же еще все прочитать и запомнить надо ))) а потом еще регулярно освежать ))) А я последний раз серьезно C++ил может быть годика полтора-два назад )))
                  LiveDoco - Live SQL Server database structure explorer and documentation tool

                  Comment

                  Working...
                  X