• Порядок инклюдов в C89 жёсткий?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    3 комментария
  • Как выполнять С89/C++ код в Visual Studio Code?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Верно пишут. Без компилятора никак. Качайте SDK и/или плагин, или устанавливаете компилятор отдельно.
    Компилятора в винде нет встроенного, насколько мне известно.
    Ответ написан
    Комментировать
  • Выгоднее ли быть разработчиком в СПБ, чем в Москве?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Ну это всё от критериев выгодности зависит.

    Москва больше, больше предложений, больше движухи и денег. Но грязно, шумно и слишком много людей.
    СПб потише, работы меньше, доход меньше, город красивее сам по себе. Но там реально пара солнечных дней в году и довольно влажный климат. Минус ещё, что СПб разваливается и там есть куча проблем с городской средой. Мало где можно встретить на центральном прогулочном проспекте шестиполосную дорогу, ну или, скажем фасады исторических зданий, за которыми уже и нет самих зданий...

    С любом случае, каждый их этих городов покажется вам раем после какого-нибудь Усть-Прямокишкинска... И разонравится, после того, как вы начнёте смотреть по сторонам и анализировать. Ну или не разонравится, если не начнёте.

    Что в Мск, что в СПб, на зарплату ~120к вас ожидает "квартира" в панельном гетто на окраине с ипотекой на 20+ лет и переплатой в два-три раза. Ну, единственное отличие, что в СПб вы возможно будете тратить меньше времени на дорогу (или нет).

    Мой вас совет: учите английский и уезжайте. СПб и Мск можно как трамплин использовать, не более того.
    Ответ написан
  • Есть ли способ импортировать установленные через conan.io библиотеки напрямую без указания пути в include?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Создайте проект на основе CMake и добавьте все нужные зависимости (в гайдах по конану всё есть). После этого открываете VS, она вроде умеет cmake проекты открывать. Всё зависимости будут на месте, если всё сделали правильно. Можно попросить cmake сгенерить вам солюшен VS.
    Ответ написан
    Комментировать
  • Хватит ли плагина google translate?

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Тут, на самом деле, необходимо чётко определить границы.

    Есть ООП как парадигма программирования. Одна из концепций ООП называется полиморфизм. Существуют различные реализации этой концепции в языках программирования.

    В C++ есть несколько реализаций полиморфизма. Вам, на данном этапе, скорее всего интересен только полиморфизм, основанный на подтипах. Это означает, что вызывающий код может работать с набором типов из определённой иерархии, без знания о том, какой это конкретно но тип: базовый или подтип.

    Касательно интерфейсов: в C++ их нет на уровне языка, как отдельной сущности. Однако же разница между интерфейсом и абстрактным классом никуда не делась.

    Пример "обычного полиморфизма":
    // Это "интерфейс", который представляет собой набор операций, которые можно произвести над объектом
    // В данном случае, по объекту можно постучать
    class IKnockable {
    public:
        virtual ~IKnockable() = 0;
    
        // Само по себе действие: "постучать"
        virtual void knock() const = 0;
    };
    
    // Реализация интерфейса классом Door
    class Door : public IKnockable {
    public:
        // ...
        void knock() const override { std::cout << "door" << std::endl; }
        // ...
    };
    
    // Реализация интерфейса классом Window
    class Window : public IKnockable {
    public:
        // ...
        void knock() const override { std::cout << "window" << std::endl; }
        // ...
    };
    
    // ...
    
    // Какая-то функция, которая может постучать  по каждому объекту из списка, 
    // не имея представления о том, что же это за объект
    void knock(const std::vector<std::shared_ptr<IKnockable>> &knockableObjects) {
        for (auto &&knockableObject : knockableObjects) {
            knockableObject->knock();
        }
    }
    
    // ...
    
    std::vector<std::shared_ptr<IKnockable>> v = {std::make_shared<Door>(), std::make_shared<Window>()};
    knock(v); // Сначала напечатает "door", потом напечатает "window"


    Ответ на ваш изначальный вопрос: это понятия из разных областей, одно из теории типов, другое из языков программирования. Интерфейс -- это одно из средств в языках программирования, для реализации определённого типа полиморфизма.
    Ответ написан
    3 комментария
  • Нормально, что в качестве проверки работодатель скинул ТЗ, где необходимо с нуля придумать и сверстать лендинг?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Причем была обозначена тема, кхм, сайт про лекарство от потенции )

    Всё ок, это не может быть реальным проектом. Такие лекарства мало кому нужны, хотя, я уверен, что есть.

    PS
    Даже если вы допустили опечатку, то всё равно сделайте то, что вы написали. Это будет забавно, покажет ваши навыки, а коммерческую пользу работодатель извлечь не сможет :)
    Ответ написан
    3 комментария
  • Как посмотреть код STD C++ в Visual Studio?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Наверно с ctrl + click должно работать (или из контекстного меню тоже самое). Ну и всегда можно пойти и посмотреть исходники стандартной библиотеки по пути установки MSVC, или кликнув на инклюд. Можно ещё в онлайн компиляторах, наверно, вывести файл исходников, если студия не установлена.
    Ответ написан
    Комментировать
  • Подготовка к собеседованию по инглишу?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Курсы, хорошие курсы английского языка с носителями. Уровень поднимайте до максимально возможного.

    Это не быстро. Но, быстрого вариант и не существует, насколько мне известно. Вы либо владеете языком, либо нет. То что вы описали -- это не какие-то специальные навыки.

    Сейчас до собеседования волноваться не стоит. Если компания, в которую вы проходите собеседование -- средней руки аутсорсер и/или не самый денежный проект, то собеседование вы считай прошли (ну может недостаточный уровень английского станет поводом вам меньше платить). Если крупный аутсорсер и/или серьёзный проект, то нет.
    Ответ написан
    Комментировать
  • В какие страны легче всего эмигрировать из России после ВУЗа?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    По Европе везде программисты нужны, в принципе. Всё от ваших навыков зависит. Почитайте вакансии на Линкедин.
    Хорошие варианты: Германия, Швеция, Нидерланды и некоторые другие страны. В Польшу, Литву, Латвию и т.п., тоже можно конечно -- они после России/Украины/Белоруссии неплохим вариантом могут показаться.
    Ответ написан
    6 комментариев
  • Есть в ли в C++ библиотека для ассоциативных массив не менее удобная чем на PHP такие массивы?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Для вашей цели могут подойти различные JSON библиотеки. Например вот эта: https://github.com/nlohmann/json#examples
    Ответ написан
    Комментировать
  • Площадка, где ищут разработчиков, готовых работать за еду?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Добро пожаловать: https://bugreports.qt.io/ . У нас куча багов и фич, за которые вам не будут платить :)
    Ответ написан
    Комментировать
  • Кто/Как отвечает за синхронизацию объявлений между “.cpp” и “.h” файлами?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Если функция объявлена, но не определена, то будет ошибка линковки. Если даже не определена, или нет подходящих сигнатур, то ошибка компиляции.

    За синхронизацию изменений отвечает сам программист. Помогать ему в этом могут разные средства разработки, например IDE. Многие IDE строят модель кода, и могут показывать сообщения об ошибках ещё до сборки программы. Помимо этого, IDE обычно предоставляют всевозможные варианты рефакторинга: хотите что-то переименовать, используйте соответствующую функциональность среды разработки. В этом случае, имя функции изменится корректно везде или почти везде.

    На практике, если вы что-то забыли, то получите ошибку сборки программы (на одном из этапов). Если проект большой и сложный, то он может и собраться, но работать очень неожиданным образом, например если линковщик нашёл где-то символы, но не там где нужно :)

    Ну и рекомендую почитать любую книгу по C++, всё что я написал выше, будет в первых главах книги.
    Ответ написан
    1 комментарий
  • Как сделать так, чтобы окно открывалось один раз и единственный(как при регистрации)?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    В Qt есть класс QSettings. Он предназначен для хранения настроек приложения. Можно использовать его, в документации есть примеры использования. Алгоритм таков:
    1) Проверяете есть ли некоторое значение в настройках
    2) Если есть, не показываете окно. Если нет, то показываете окно и устанавливаете значение.

    Если действительно нужен механизм регистрации, то тут всё несколько сложнее.
    Ответ написан
    4 комментария
  • Насколько влияет качество диплома при трудоустройстве?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    На самом деле, формально нет, не влияет.

    Тут немного в другом дело, если очень коротко, то: знания, формирование мышления, знакомства, стажировки, возможности, конференции, вакансии, уровень жизни. Есть возможность переехать, однозначно переезжайте, и чем раньше, тем лучше.

    ШАД можете параллельно закончить, там не обязательно очно учиться. Это будет полезно, тем более потому, что вы собрались не веб-странички клепать, а чем-то серьёзным заниматься.
    Ответ написан
    Комментировать
  • Какой контейнер/методология сможет заменить Map из JavaScript?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Насчёт JS не знаю, но, судя по описанию, вам необходима структура данных, которая называется FlatMap (есть например в бусте), ну или по крайней мере, сильно на неё похожая.
    В общем и целом, можете написать свою структуру данных вроде std::vector<std::pair<KeyType, ValueType>>. Ну а базовый контейнер выбрать в зависимости от того, какие операции будут применяться к структуре наиболее часто, я просто вектор для примера привёл.

    К слову
    В QList индексы просто по порядку должны идти, без пропусков и не получится сразу взять и вставить на 42 место.

    Подразумевает наличие 42 элементов (не важно пустых или нет), что вам, кажется, не надо. Поэтому, уточните плз, какую задачу вы решаете и какие реально есть требования к структуре данных.

    upd.
    Посмотрел доку на JS, похоже там реально flat map.
    Ответ написан
  • Как узнать позицию элемента в массиве?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Добавьте ещё одну переменную под число, и изменяет её там же, где max. Что-то вроде num = arr[i].
    Ответ написан
    Комментировать
  • Почему нельзя передавать лямбду как аргумент шаблона?

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

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Ну для POD должно как-то так работать:
    anketa a;
    
    std::ofstream out(file_name);
    out.write(reinterpret_cast<char*>(&a), sizeof(a));
    
    // ...
    
    std::ifstream in(file_name);
    in.read(reinterpret_cast<char*>(&a), sizeof(a));

    Но у вас там std::string есть, а его надо в char* преобразовать чтобы так записать. Это больше чем одна строчка. Поэтому, такие чтение/запись надо выносить в отдельные функции.
    Ответ написан
    Комментировать
  • Создание онлайн компилятора?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Например вот это: https://github.com/mattgodbolt/compiler-explorer
    Ну и сам проект онлайн: https://godbolt.org/

    К слову, большая часть профессиональных C++ разработчиков пользуются этим инструментом.
    Ответ написан
    Комментировать