• Как реализовать множественную замену с помощью JavaScript?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    А по какому критерию решение не оптимальное?
    Так-то набить массив из пар и в каком-нибудь цикле или его аналоге прогнать. Ну или может быть в JS есть какой сахар, не знаю, не пишу на это языке. Правда прироста по скоросте это не даст, только код будет слегка красивее.
    Ответ написан
  • Можно ли писать на чистом Си под Qt? Или для этого нужно именно Си++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Теоретически можно, но вот на практике получится всё печально. C++ и C это два совершенно разных язык, а соотвественно и подход к разработке разный. Хороший C программист, который только начал писать на плюсах, почти на 100% плохой C++ программист, который пишет на "C с классами" и много не понимает. Разумеется после знакомства с C научиться использовать C++ будет легче и это плюс.
    А в Qt надо знать C++ на приличном уровне (и много чего еще), чтобы не спотыкаться на очевидных вещах и не применять GDD подход без понимая происходящего :)
    Ответ написан
    Комментировать
  • Настроить Vim как среду разработки для GO (Golang)?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Александр Сёмченко Вам абсолютно верно всё написал. Учитесь читать. Вы сами пишите:
    После команды :GoInstallBinaries начинается процесс установки, но вылетают предупреждения о том что не найдены какие то компоненты типа nsf/gocode и целая туча других.

    При этом в секции install плагина явно написано:
    Please be sure all necessary binaries are installed (such as gocode, godef, goimports, etc.)

    Если команда :GoInstallBinaries что-то не устанавливает, значит надо разобраться почему. Тут может быть масса вариантов, например нет прав на запись, не установлен гит и т.п. Думаю, что никто вам больше чем в секции install не напишет. В конце концов, код открыт, изучайте/разбирайтесь.
    Ответ написан
    Комментировать
  • Стоит ли делать в таком случае базовый класс и наследоваться от него?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Если даные только для внутреннего пользования, то намного лучше создать структуру Data (имя можно менее общее) или две структуры, если данные нельзя скомпоновать по смыслу в одну структуру.
    Ну и наследовать все классы от QMainWindow это не очень правильно. Т.к. по смыслу в большинстве случаев главное окно одно. Этот класс отличается от обычного QWidget наличием дополнителных компонентов, добавленых по умолчанию (тулбар, например).
    Ответ написан
    2 комментария
  • Почему программисты не любят возврат константных ссылок в C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Что касается кода... Код как код. Если есть реальная потребность возвращать по конст ссылке и без этого не обойтись, так возвращайте. Разумеется, если это не противоречит стандартам кодинга в вашей компании, структуре API и всему такому. В любом случае вы должны просчитать все последствия и варианты использования в реальном приложении. На синтетическом примере этого не увидеть. Я бы если честно предпочел видеть умные указатели, если приложение уж не совсем такое, где надо на всём экономить (а уж чтобы не использовать умные указатели, нужны обоснования и веские).
    Если пользовательский тип поддерживает implicit sharing (можете прочитать про это в доках Qt, у них даже есть специальные классы, которые облегчают жизнь тем, кто хочет создавать свои "copy on write" классы), то его смело можно возвращать по значению. Это же справедливо и для smart pointer'ов.
    Ответ написан
    Комментировать
  • Стоит ли заниматься поддержкой проектов на Delphi? Не тупиковый ли это вариант развития?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Годик можно поработать, параллельно изучая что-то более актуальное, а потом уехать в город побольше с крупными компаниями, интересными проектами и т.п. Конечно лучше сразу это сделать пусть даже и работать за еду стажером и арендовать подоконник :) Зато будет вагон неоценимого опыта и коллектив профессионалов у которых можно учиться. Ну может конечно не супер профессионалов, но вероятно лучше чем на нефтянном заводе. Через год-два (от вас зависит и только от вас) можно уйти на более интересную работу ну или вырости в джуна-мидла в этой же фирме.
    Откройте например hh.ru и ужаснитесь количеству вакансий для программистов на делфи. Очень уж нишевой это язык и стек технологий.
    Ответ написан
    Комментировать
  • Почему компилятор выдаёт ошибку "not a type" при использовании forward declaration?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Вам нужно использовать scoped enum из C++11, их, в числе прочего, можно форвардно объявлять. В этом случае перечисление можно из класса вынести.
    Если нет возможности включить поддержку C++11, то придется явно инклудить.
    Ответ написан
    3 комментария
  • Как исправить проблему с пропавшими картинками в папках на компьютере?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Винду переставлять, что еще! Это вам урок на будущее: ничего не удаляйте без бекапов.
    Ответ написан
    4 комментария
  • ООП головного мозга?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    С открытыми полями можно сделать разве что какую-нибудь структурку вроде std::pair, которая допустим откуда-то возвращается в качестве результата (например это результат вычислений и какой-нибудь тэг) или которая используется только в рамках одного класса или просто в одном cpp файле как вспомогательная, но не где более.
    В остальных случаях всегда нормальная инкапсуляция иначе потом будет плохо и вы будете страдать. Представьте ситуацию с большим проектом, когда вам нужно банально поставить бряку и посмотрять кто и когда изменил значение поля. Или например добавить любую логику перед установкой/получением значений (хотя бы банальные нотификации).
    Просто возьмите за правило инкапсулировать и все. Нажать пару кнопок для генерации методов лучше, чем потом страдать.
    Ответ написан
    Комментировать
  • Scrypt - C++ | Библиотека криптографии из litecoin?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Для того, чтобы подключить что-то не header only (в данном случае либу), это нужно собарть или скачать в собранном виде. Затем добавить в CMakeLists нужную директорию с заголовочниками с помощью include_directories, и добавить флаги линкера, например с помощью target_link_libraries. Подробнее читайте доки CMake.
    Ответ написан
  • Почему вырубается материнка?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    В какой-нибудь сервисный центр отнесите если интересно узнать в чем проблема и починить, если нет, то просто утилизируйте. Вероятно там какой-нибудь конденсатор просто пробило, кто же может угадать...
    Ответ написан
    1 комментарий
  • Как подключить qt к cmake?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Во-первых поставьте системную Qt (погуглилте как это в вашем линуксе сделать), для вас это будет намного проще, чем собрать Qt самостоятельно и сделать все то, что CLion написала вам в лог.
    Во-вторых CMakeLists должен быть примерно таким (ну инклюды там свои пропишите и пр.):
    cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
    
    project(Foo)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS} -std=c++1y")
    
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTORCC ON)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    
    find_package(Qt5Widgets REQUIRED)
    
    include_directories(${Qt5Widgets_INCLUDES})
    add_executable(Foo main.cpp)
    qt5_use_modules(Foo Widgets Core)

    Но зачем вам страдать с CLion, которая под разработку на Qt вообще не заточена? Не лучше ли взять нормальную IDE вроде QtCreator и не страдать?
    Ответ написан
    Комментировать
  • Где скачать среду для С++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    https://www.qt.io/ru/download-open-source/
    И поставьте уже (хотя бы на виртуалку) линукс и забудьте о проблеммах с установоками/отладокой/кодировоками.
    Ответ написан
    Комментировать
  • Как работать в Visual Studio 2015?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Как в билдере не будет ;) VCL уже давно умер, как и MFC, тут вы правы что перешли.
    VS -- это всего лишь IDE, довольно убогая для плюсов без всяких там решарперов и плагинов. Т.ч. пишут не на VS, а в VS.
    Для C++ вменяемый GUI (и не только) фреймвок -- это Qt. Вот его и надо изучать, если хотите интерфейсы (про QML не забудьте). Я бы сказал, что соотвествующих по уровню альтернатив просто нет. По рынку труда ситуация таже.
    Кстати, для VS есть расширение для поддержки Qt. Я правда не уверен насчет расширений для самых последних версий (т.к. под виндами не работаю), но можете глянуть на сайте.
    Ответ написан
  • Python или C++ для windows приложения?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Есть же cx_Freeze, например. Там все очень просто.
    Ответ написан
    2 комментария
  • Как сделать try finally в С++?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Нет, т.к. в C++ finally нету по стандарту, а значит сахар от MS и CB непереносим т.ч. мой совет, не пользоваться им. Обычного try-catch за глаза хватит, т.ч. почитайте как этим пользоваться просто, тут например: www.cplusplus.com/doc/tutorial/exceptions
    Ответ написан
    7 комментариев
  • Где смотреть конструктор класса?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Без понимания ООП в C++, хотя бы основ, в мире Qt делать вообще нечего. Нет знаний ООП и базовых знаний языка -- не осовите вы Qt никогда.
    Я думаю, что где-то в книге Шлее написано что вы должны понимать ООП, хотя не уверен. Так-то и книга не нужна: примеры + документаций + форумы -- это достаточно.

    Отвечая на ваш вопрос, методы тут можно посмотреть: https://doc.qt.io/qt-5/qwidget.html .
    Ответ написан
    Комментировать
  • Что значит использование внутриклассового инициализатора в конструкторе?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Взять книгу где вы это прочитали, найти оригинал на английском и гуглить уже по оригиналу, а не по потугам переводчиков. Ну или дайте контекст, код и т.п.
    Ответ написан
    Комментировать
  • Как указать в шаблонной функции лямбда функцию как параметр?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Как и в случае с обычной функцией:
    template <class F>
    void foo(F f) {}
    Ответ написан
    1 комментарий
  • Как передать двумерный массив в функцию?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Выше ответиили в комментариях по факту про разные способы от себя добавлю, что вобще лучше использовать std::vector<std::vector<T>> или что-нибудь вроде boost::numeric::ublas::matrix. Тут от целей зависит конечно же.
    Ответ написан
    1 комментарий