• Как правильно инициализировать константы в namespace в *.h *.cpp?

    @MarkusD Куратор тега C++
    Acaunt, нет, грубо говоря так нельзя.
    Дизайн твоего кода должен быть таким, чтобы учитывать все правила языка. Язык не будет подстраиваться под твой код, это твой код нужно подстроить так чтобы он ложился на язык.

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

    В любом случае. Этот твой вопрос решен, единственный ответ дает тебе решение, хоть и не объясняет почему extern решает проблему.
    Все остальное - дело уже другого вопроса.
  • Как правильно инициализировать константы в namespace в *.h *.cpp?

    @MarkusD Куратор тега C++
    maaGames
    Могу ошибаться

    Да, ошибаешься.
    Порядок инициализации глобальных констант и переменных не определен только между модулями трансляции. В модуле трансляции порядок определен первенством следования в тексте программы.

    Строковые значения у автора пустые по другой причине. Но автор не раскрывает своих карт, заставляя других людей заниматься гаданием. Потенциально это из-за SIOF.

    Про extern ты прав. Он дает выражению характеристику внешнего связывания, а у глобальных констант без этого спецификатора связывание внутреннее.
  • Ошибка в Visual studio opengl. Как решить?

    @MarkusD Куратор тега C++
    Risdaw,
    мне не помогает, я уже во все папки скопировал и ничего все-равно ошибка

    Это значит что ты просто замусорил другие папки, так и не скопировав файл в нужную. Такое бывает когда берешься за дело без знаний об инструменте. А где же еще набраться знаний, как не в документации к инструменту?
    Если людей о каждой мелочи спрашивать, ты очень быстро останешься один.
    Выходная папка проекта задается в настройках проекта.
  • Как отключить вывод в шестнадцатеричном виде в Visual Studio 2022?

    Василий Банников, а эта настройка находится уже только в контекстом меню значения. И переключается она всегда раз и навсегда. Т.е. один раз переключил и все будет как положено.
    О чем автор спрашивает, в целом, не понятно. Если только не допустить момент, что автор студию поставил под другим пользователем и не имеет прав на изменение ее настроек. В этом случае настройки студии будут сохраняться только на период сессии. В остальных случаях настройки всегда будут применяться для всех следующих сессий.
  • Как отключить вывод в шестнадцатеричном виде в Visual Studio 2022?

    Викентий , а что ты хочешь увидеть в десятичном представлении адреса виртуальной памяти?
  • Как на самом деле работает параллелизм?

    Sazoks, да нет, у тебя и правда много перемешано в вопросе. С первых строк видно что ты почти все неправильно понимаешь. И у тебя действительно несколько вопросов в одном.
    Почему тебе сейчас пишут в комментариях, а не в ответах. Это потому что нормально ответить на твой текст очень тяжело. Я и другие люди так просто экономим свое время.
    Подели свое обучение на три этапа. Первый этап - это программный параллелизм, системы планирования, системы разделения времени, системы пакетной обработки, системы реального времени. Второй этап - это архитектура вычислительных систем, SIMD, MISD, MIMD, топологии вычислительных систем и прочее (книга В. Г. Хорошевского). Третий этап - это аппаратный параллелизм современных процессорных архитектур, MESI, многоуровневый кэш и режимы параллельной обработки данных.
    Так у тебя должна будет выстроиться единая линия понимания параллелизма.
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    @MarkusD Куратор тега C++
    Qubc, ява - это язык более высокого уровня, чем C++. Ява многое прощает своему пользователю и очень много думает за пользователя. Это одновременно и преимущество явы перед плюсами, и ее недостаток перед плюсами.
    Да, в яве у тебя такой вопрос не возник бы, но не потому что ты детально знаешь организацию памяти объекта в яве.
    В плюсах же у тебя такой вопрос возник именно потому что ты плохо знаком с поиском имен в C++.
    Ява не стимулирует тебя к более глубокому знанию.
    C++ - стимулирует, хоть и делает это весьма изощренно. :)
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    @MarkusD Куратор тега C++
    Qubc, ответ отмеченный решением таковым не является. У человека там сплошная эзотерика написана.
  • Как правильно написать функцию принимающую универсальную ссылку?

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

    @MarkusD Куратор тега C++
    rusyska55011, решишь задачу правильно, отвечу на твой вопрос.
    Для решения задачи у тебя есть два множества: множество "A" и множество "B". И есть интерфейс с функцией "virtual B Intf::Foo(A) = 0";
    В базе кода уже присутствует полсотни имплементаций этого интерфейса и больше тысячи мест использования имплементаций по интерфейсу.
    Твоя задача - создать еще одну имплементацию "Intf::Foo", для работы которой потребуется сперва как-то изменить как множество "A", так и множество "B".
    Вопрос: какие ограничения уже имеющийся код накладывает на твои возможности по изменению множеств "A" и "B"?
  • Есть ли смысл в бОльшем FPS, если частота обновления монитора 60 Гц?

    Вадим Соловьёв, пять лет с тех пор прошло, без малого.
    А можно узнать почему?

    Можно, конечно. Потому что сегодня мониторы с ограничением вертикальной синхронизации - это уже самый низ бюджетной ниши.
    FreeSync уже очень широко поддерживается и представлен аж несколькими версиями.
    G-Sync поддерживается не мене широко и тоже имеет несколько ревизий.
    Ну и главное. Мифом является то, что человеческий глаз различает не больше 24FPS. В том же 2018 году пошли активные обсуждения о переходе кинематографа на 96FPS. Разница между 60 и 96Hz заметна также хорошо, как и разница между 30 и 60Hz. Разительно заметна. Кинотеатры впечатлили зрителей более плавной и более живой картинкой.
    Разница между 120 и 240Hz заметна ничуть не хуже. Глаз человека продолжает улавливать изменения даже на такой частоте.
    Обработка ввода и рендер с частотой свободной развертки очень сильно меняет игровой опыт. Не в шахматах, конечно. Но даже медитативные игры с уклоном на созерцание дают иной опыт в этом случае.

    Выбор бюджетного офисного монитора для домашнего ПК - это вариант права каждого человека на личную ошибку.
  • Почему явная специализация невозможна?

    @MarkusD Куратор тега C++
    Acaunt, приведи ошибки из лога сборки, текстом, оформленным как код. Люди не читают с изображений.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname,
    1. Effective C++

    Утратила свою актуальность, уступив следующей книге.

    2. Effective Modern C++

    Актуальна. Последнее издание описывает не только тонкости C++14, но и довольно хорошо заглядывает в будущие стандарты.

    3. Effective STL

    Утратила актуальность, уступив изданиям от Вандервуда.

    4. More Effective C++

    Утратила актуальность, еще старше предыдущей книги и описывает немного другой STL.

    5. Exceptional C++

    Актуальна. Позволяет просто понять цель существования исключений в C++. Исключения в последних стандартах менялись не так сильно. После книги актуализировать знания до современного уровня труда не составит именно что за счет знаний из книги.

    6. More Exceptional C++

    Актуальна, как и предыдущая.

    7. Exceptional C++ Style

    Тоже актуальна.

    8. C++ Coding Standards

    Актуальна. Это - классика. К стандартам языка она не привязана.

    9. Modern C++ Design

    Актуальна. Про нее я уже говорил выше.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname, так. Давай еще раз повторю.
    Напиши, о каких именно книгах ты спрашиваешь. Не о авторах, а именно о книгах.

    Иначе я отвечаю твоими же словами:
    это не ответ на мою просьбу. Если упоминаете какие то референсы то и скидывайте конкретные примеры
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname, тогда нужно было в вопросе максимально точно написать, о каких именно книгах идет речь.
    Потому что сейчас твой вопрос звучит именно так, как его прокомментировал Adamos. И ответ свой я дал именно на изложенную формулировку вопроса, а не на ту, которую ты для себя подразумеваешь.

    Напиши, о каких именно книгах ты спрашиваешь.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname
    но в этом и проблема что все книги упомянутых мною авторов датируются 2001-2004 годами

    Ну это немного неправда :)

    Прямо по приведенным мной ссылкам у авторов есть книги 2015, 2017 и даже 2022 годов.
    Они все на английском, в первоисточнике, но разве это проблема для программиста?

    Про книги до 2011 года у меня еще можно заметить некоторую осторожность. Я не отсекаю все книги до 2011 года.
    Например, у Вандервуда и Джосаттиса есть книга по шаблонам C++ от 2003 года, которую я порекомендую читать до второго издания 2020 года. Это потому что в том первом издании рассказывается именно скелет метапрограммирования в C++, а второе издание уже надстраивает над этим скелетом понимание современных шаблонов. Это очень важно, иначе есть риск не понять всю концепцию метапрограммирования в C++.
    Еще в качестве примера, у Йона Снейдера есть буквально замечательная книга по TCP. Эта книга от 2002 года и она актуальна по сей день. Я порекомендую именно ее вместо всяких современных изданий от сомнительных индусов.
    Ровно также я бы не отметал и Современное проектирование на C++ от Александреску. Опыт в этой книге актуален и сегодня.
  • Как зайти в геймдев с 3d и архитектурой?

    Artcomplex, 20 лет по профессии. Этим можно гордиться. Это дает повод уважать.
    Я - инженер, примерно столько же лет занимаюсь написанием кода игр. Я далек от арта и дизайна, поэтому не могу оценить твои навыки по приведенному изображению. Но через разговор сориентироваться могу.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    Станислав Макаров, вот вообще очень редко. Но может быть это такая специфика C++ собеседований в геймдеве.
    Правило трех или вообще не обсуждали, или всего один раз за последние пять лет обсуждали как правило трех/пяти. Чаще речь заходит только о правиле пяти.
    В целом, я с тобой соглашусь, что очень много где люди до сих пор так и не свыклись с изменениями в C++11 и дальше. Мне с позиции соискателя иногда приходится поправлять собеседующих меня людей по разнице поведения до и после 11го стандарта. И я искренне радуюсь когда со стороны компании выступают хорошо подготовленные по последним стандартам люди, которые могут и мне на мои ошибки указать.
  • Как зайти в геймдев с 3d и архитектурой?

    Artcomplex , какие у тебя навыки в 2D и 3D? Есть коммерческий опыт применения этих навыков, сколько лет и на каких должностях?
  • Можно ли при вызове функции указать в него тип данных?

    @MarkusD Куратор тега C++
    Acaunt, я позволю себе дать ответы на твои вопросы, ни коим образом не отнимая право на них у автора ответа.

    1) Явное лучше неявного. Широкое использование auto только усложняет чтение кода, сбивает читателя с его мысли и заставляет задаваться совсем ненужными вопросами. Поэтому лучше указывать явные типы переменных. А обобщение использовать стоит только тогда, когда указание явного типа только затрудняет понимание кода при чтении.
    2) Интуитивно более понятен и удобен вариант автора ответа, за тем лишь исключением, что обобщенный тип результата в шаблоне - это как у собаки пятая нога. auto в типе результата буквально незачем. Объявление этого шаблона должно быть таким:
    template <typename TResult>
    TResult search (std::string str);

    Это снова потому что явное лучше неявного. Шаблоны читать итак нелегко, а когда там еще и обобщения накручены, то становится только сложнее. Обобщение следует использовать только в обобщенных функциях, а не в шаблонах.