Задать вопрос
  • Как изменить иконку исполняемого файла?

    @MarkusD Куратор тега C++
    Ternick , ты этот код трассировал?
    icon.seekg(0, icon.end); // 1
    buffer_size = (size_t)icon.tellg(); // 2
    buffer = new wchar_t[buffer_size];
    icon.read(buffer, buffer_size); // 3


    Давай по пунктам.
    Какое состояние будет у стрима после выполнения (1)? Интересует твое описание состояния и показания функций eof()/good()/fail().
    Что именно будет записано в buffer_size после (2)? Что именно отражает функция tellg()?
    Что покажет eof()/good()/fail() стрима после (2)?
    Сколько байт будет прочитано в buffer в результате выполнения (3)?
    Как проверить сколько байт прочитано в буфер? Что содержится в buffer до выполнения (3) и что содержится после выполнения?
  • Что не так с работой unordered_map?

    @MarkusD Куратор тега C++
    kruta, у тебя рядовая проблема понимания аллокаторов. Но о решении говорить еще очень рано.
    Тебе нужно предоставить код аллокатора и код инстанцирования std::unordered_map с этим аллокатором.
  • Куда с точки зрения структурированности нужно писать #include в .h файлы, или в .cpp?

    @MarkusD Куратор тега C++
    Hatemylifezxc , информация к сведению.
    Твой вопрос довольно сильно пересекается с этим вопросом. Насколько сильно, что, можно сказать, повторяет его.
  • Возращение из функции тип template?

    @MarkusD Куратор тега C++
    Данил, условие не просто не сработало. Инстанцирование шаблона требует генерации всех ветвей кода. Твой if (std::is_same<T, std::string>::value) будет всегда приводить к ошибкам, кроме случая когда T это std::string или какой-нибудь тип с неявным преобразованием к std::string.
    Выходов для твоего случая, чтобы компилятор делал именно то, что тебе надо, у тебя всего три. Твой вопрос повторят один из уже заданных.
    В твоем случае все точно так же. Или ты используешь C++17, или частичную специализацию, или SFINAE. Только в этих случаях компилятор сделает то, что тебе надо.
  • Возращение из функции тип template?

    @MarkusD Куратор тега C++
    Данил, вижу листинг ошибки.
    Там вместе с листингом есть указание, на какой строчке и в какой позиции строчки произошла ошибка.
    Это строчка: std::string str = x;.
    Ты ведь понимаешь что компиляция пошла внутрь блока под if (std::is_same<T, std::string>::value)?
    Как ты думаешь, почему это произошло?
  • Возращение из функции тип template?

    @MarkusD Куратор тега C++
    Данил , что значит не компилируется?
    Покажи листинг ошибок при компиляции.

    Ошибка, к слову, у тебя на лицо. Да не одна при том. Но мы начнем с самого начала чтобы тебе стало понятно как такие ошибки решать самостоятельно.
  • Большие шаблонные классы( реализуя CRTP). Все пихать в один .h файл?

    @MarkusD Куратор тега C++
    Артур, может быть тогда тебе пригодится и другой мой ответ?
    Вопрос там у человека тоже был довольно интересный.
  • Почему в структуре array количество элементов пишется там же где и тип данных?

    @MarkusD Куратор тега C++
    Алан Гибизов , все норм. :)
    По вопросу, в моем понимании вопроса, Антон Жилин все верно изложил.
  • Почему в структуре array количество элементов пишется там же где и тип данных?

    @MarkusD Куратор тега C++
    Алан Гибизов , нет, это не вариативный шаблон.
    Игорь Журавлёв , std::array - это высокоуровневая реализация массива фиксированной длины. Второй параметр позволяет задать размерность массива.
    В памяти твой std::array<int, 7> будет эквивалентен типу int[7]. Но вот интерфейс у него будет значительно богаче.
  • Большие шаблонные классы( реализуя CRTP). Все пихать в один .h файл?

    @MarkusD Куратор тега C++
    Артур, дело в том, что CRTP в общем смысле - это mixin.
    Миксины реализуют некоторую очень узкую функциональность поверх некоторого типа. Именно для этого тип в миксин и передается.
    Миксин как бы подмешивает свою функциональность в общую функциональность внешнего типа.
    Обычно эта функциональность является очень компактной, как, например, идиома иммутабельности или идиома некопируемости.

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

    В целом-то, быть может тебе от динамического полиморфизма перейти стоит именно к вариантам CBSE? Композицию сделать можно и другими способами, попроще. А уж компонентно-ориентированный подход сегодня обсуждается очень широко и представлен большим объемом информации.
    Вопрос в том, что именно ты решил изменить через замену динамического полиморфизма на статический?
  • Большие шаблонные классы( реализуя CRTP). Все пихать в один .h файл?

    @MarkusD Куратор тега C++
    Артур , постой-ка. А почему базовый класс должен быть шаблонным? Прямо таки CRTP этого требует?
    Давай проясним суть CRTP. Что это, что обозначает этот акроним и чем CRTP является в общем понимании не привязываясь к конкретному языку?
  • Стоит ли тратить время на GLSL и OpenGL во времена Unreal Engine 4?

    Роман Денискин,
    Так есть ли смысл рыпаться в геймдев разработку изучая кучу новых компетенций

    Тут как сказать... Вот лично я, исключительно по своему опыту. Для меня на моем первом курсе стало откровением что я смогу работать в геймдеве. В те года, насколько мог, я рыл информацию о том, как создавать игры, но находил только информацию о том, как писать свой движок. И интереснее всего для меня стала именно разработка движка.
    Все определяют твои интересы. Если у тебя мало интересов на твоей текущей работе, если тебя тянет в другую область, то попробовать себя, конечно, стоит.

    5-7 лет - это, в большей степени, специфика C++. Использовать его не так просто, обучаться работе с ним тоже непросто. До сих пор на разных должностях работают люди, которые, в целом-то, пишут на этом языке, но зачастую даже не понимают что именно они пишут. Ты смотришь в этот код и у тебя волосы встают дыбом. :)
    Я работаю не только с плюсами, я активно применяю и питон, и шарп, и некоторые встраиваемые языки. И вот если у меня приключается проблема с питоном или шарпом, я чаще иду сюда или на so. Но если у меня случается проблема с плюсами, я иду читать стандарт и документацию. На других языках и писать проще, и проблемы решаются легче. В этом суть вот этих 5-7 лет. А на работу ты можешь пробовать устраиваться хоть с текущими знаниями, тебе по требованиям к сотруднику все расскажут.

    И в случае если я таки решусь, на какие зп тут и на западе может примерно рассчитывать разработчик С++ со знанием того же UE4 + Vulkan?

    Про з/п придется разговаривать непосредственно с будущим нанимателем. Но что-нибудь между $1.5k и $3k/mth вполне может нарисоваться. В общем смысле ты вполне можешь рассчитывать на все те же $2k/mth на среднем уровне. Но еще готовиться стоит к тому, что у пользователей C++ в целом зарплата немного не соответствует требованиям, она обычно изрядно ниже.

    Как минимум, если тебе захочется именно зайти в геймдев оглянуться, ты можешь попробовать такой план.
    У тебя определенно есть некоторая подушка безопасности. Вбрось в нее еще на три месяца вольной жизни и попробуй устроиться на эти три месяца джуном хоть на тот же UE4. Я тебе гарантирую, когда окажешься в офисе (ну... после всех карантинов, конечно же) рядом с опытными ребятами, у тебя на многое откроются глаза и многие направления попрут как по маслу.
    Три месяца пройдет, там и решай уже что и как. Вернуться к своей текущей работе ты ведь все так же сможешь.

    Кстати... да...
    разработчик С++ со знанием того же UE4 + Vulkan

    Вот такой толковый человек может рассчитывать на многое.
    Это - Graphics Engineer (Graphics Programmer), от которого требуется не просто уверенное знание плюсов и GAPI, а знания физики, математики, алгоритмов, оптимизации по времени и данным для GPU, понимание современных графических конвейеров и много всякого другого интересного. Обычно у этих людей перекос или в программировании, или в точных науках, а в противоположном направлении наблюдается просадка знаний. Так вот, полноценно развитый инженер графики - это крайне ценный специалист.
  • Стоит ли тратить время на GLSL и OpenGL во времена Unreal Engine 4?

    Роман Денискин , внесу небольшое уточнение.
    Тебе стоит разобраться в своих желаниях.
    Если тебе хочется делать игры: взять все-таки стоит Unity, т.к. там минимальный цикл разработки многократно меньше UE4.
    Если тебе хочется пойти в серьезный геймдев и делать именно игры, тогда все верно: стоит брать UE4 и получить хорошую квалификацию в C++.

    Если тебе хочется работать в области разработки игр, но непосредственная разработка тебя интересует мало, тогда UE4 для тебя - это не более чем книга для чтения, а изучать уже нужно архитектуру, алгоритмы, математику, оптимизацию, профилирование, низкоуровневые API самых разных осей и направлений. Нужно знать как эффективно работать с памятью и с разными процессорами, как эффективно использовать GPU, как эффективно и понятно писать технически сложный код.
    И вот тогда, как написал Владимир Коротенко , ты как минимум будешь понимать что под капотом у высокоуровневых инструментов. Лет через 5-7 начнешь понимать, если прямо сейчас приступишь. Это долгая и тяжелая дорога к работе в серьезных компаниях.

    И через эти 5-7 лет OpenGL уже будет не нужен. Он и сейчас уже не больно-то нужен, в виду наличия более эффективного вулкана. И тут снова проблема. Вулкан - это очень сложная система с множеством свобод и большими требованиями к профессионализму пользователя. К нему надо подходить уже со знанием графического конвейера, а на это снова нужно много времени и практики.
  • Почему не загружается шейдер?

    @MarkusD Куратор тега C++
    Sancei Laks , нужен код инициализации OpenGL.
  • Как передать параметры в другую программу, запускаемую из кода C/C++?

    @MarkusD Куратор тега C++
    Павел Матвеев, именно для этого люди и читают документацию. :)
    system выполняет системную команду в окружении текущего процесса. Если окружением является cmd, команда будет выполнена в cmd, если bash - то в bash. Строка команды будет передана в подключенный командный процессор, если таковой подключен. И даже в подсистеме оконных приложений Windows, system позволит тебе запустить другую программу с передачей в нее параметров запуска.

    Вторым важным моментом является то, что ты ничего кардинальным образом не сломаешь если просто попробуешь свои догадки. Эксперименты с библиотечным кодом - это неотъемлемая часть освоения любой библиотеки, на ряду с чтением ее документации и, собственно, трассировкой кода. Изучай через эксперименты, документацию и отладку.

    Вот ты сейчас предположил system("C:/Windows/System32/cmd mkdir directory"), а чего просто не вписал и не попробовал? Можно даже так попробовать: system( "mkdir c:\\my-test-dir" ).
    И как? Работает?
  • Как передать параметры в другую программу, запускаемую из кода C/C++?

    @MarkusD Куратор тега C++
    Павел Матвеев , а что тебе мешает собрать строку полной команды запуска со всеми параметрами и передать ее в функцию system?
  • Массивы структур?

    @MarkusD Куратор тега C++
    Антон Жилин,
    При создании cars стоит указать тип vector, иначе это будет initializer_list, который несколько раз (!) будет копироваться в нормальный контейнер.

    Просто на заметку.
    Да, cars будет иметь тип std::initializer_list<Car>, но его копирование - это не проблема.
    std::initializer_list является легковесной надстройкой над статическим массивом на стеке. Внутренняя реализация этого типа не стандартизирована, но практически всегда его размер не превышает двух регистров процессора.
  • Почему размер объекта не совпадает?

    @MarkusD Куратор тега C++
    Никита Каргин, а как насчет того чтобы отметить ответы как решения?
    С моей точки зрения оба ответа являются исчерпывающими для твоего вопроса.
  • Почему размер объекта не совпадает?

    @MarkusD Куратор тега C++
    Никита Каргин, у тебя остались еще какие-нибудь уточнения или вопросы относительно изложенных ниже ответов?
  • Четные и нечетные элементы в массиве на С++?

    @MarkusD Куратор тега C++
    Mag1str, так я и спрашиваю, что тебе непонятно в сортировке четных и нечетных элементов массива?
    Какие у тебя есть предположения по решению задачи?

    Твой вопрос сейчас целиком попадает под П5.12 регламента работы сервиса. Мои уточняющие вопросы нужды для того чтобы ты мог исправить ситуацию фактического нарушения правил.