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

    @MarkusD Куратор тега C++
    tamtakoe, так значит, это Godot и Webkit.
    Какую задачу ты решаешь через одновременное подключение обоих заголовков на стороне obj-c?
    Написано
  • Как использовать класс, определенный в двух подключаемых файлах?

    @MarkusD Куратор тега C++
    Как в C++ избежать ошибки redefinition of 'Class3' в файле module.mm

    Никак. ODR непреложно.

    У тебя терминология плывет. Тебя люди сейчас не понимают. Имеющиеся ответы тому только подтверждение.
    module1.h экспортирует Class1, Class3

    Что такое "экспортирует"? C++ оперирует только объявлениями и определениями. Исправь свой вопрос согласно терминологии языка.

    В module1.h и module2.h может быть определена куча классов, нам по сути нужно исключить определение Class3 из module1.h для нашего module.mm

    Если менять нельзя, просто выкинь весь этот код. Он не достоин использоваться если в нем нельзя исправлять фундаментальные нарушения стандарта языка.
    В ином случае подобные помойки каждое свое определение заключают в условную компиляцию. Тогда тебе нужно знать макрос, который выключит код определения ненужного тебе типа.
    Написано
  • Что стоит учить с или c++ или c#?

    @MarkusD Куратор тега C++
    Владислав Калужский , всё как и всегда.
    Начинать нужно всегда с того языка, на котором ты думаешь, разговариваешь в быту и пишешь. С Русского языка. У тебя с ним, видно, все вполне хорошо. Пишешь понятно, мысли за словами прослеживаются.
    Значит нужно двигаться дальше. Следующим языком для тебя должен быть интернациональный. На этом языке идет общение в сообществах и передаются знания, как через книги, так и напрямую. Английским нужно владеть на уровне способности читать без запинки и словарей, также на английском нужно уметь внятно писать. Навыки устного общения будут плюсом, но на этапе обучения сильно не требуются.

    Языки программирования - это инструменты. А инструменты всегда надо выбирать от условий задачи. У тебя не выйдет решать все задачи только каким-то одним языком. Знать во всех тонкостях и уметь использовать строго по назначению Python, Java, C#, C++, Lua, TypeScript и, например, PHP не просто нормально, а важно.
    Бьерн Страуструп один раз говорил о том, что для настоящего инженера важно знать порядка 5 разных языков и разбираться в их особенностях, чтобы считать себя настоящим специалистом.

    Поэтому вообще не важно что ты выберешь на свой первый раз. Качество инженера раскрывается в его умении полноценно владеть множеством инструментов.
    Написано
  • Как идентифицировать переход результата от положительных значений в отрицательные?

    Canp, любую задачу можно решить десятками самых сложных и витиеватых вариантов. Например, вариантом как у Сережи в ответе или как у тебя в комментарии.
    Но как твою задачу решить качественно? Для этого надо просто подумать.

    Тебе нужно знание места перехода от положительных значений к отрицательным. Это знание в моменте можно получить через признак знака. Именно знание признака, а не знание самого знака.
    А это значит, нам нужен только булев флаг:
    is_negative = d < 0

    Тебе нужно знание только места смены знака, значит тебе надо знать, когда знак был один, а стал - другой.
    А это знание достигается через отслеживание признака знака на дистанции одного шага назад, через второй булев флаг:
    was_negative = is_negative

    Так и происходит формализация твоей потребности в терминах языка.
    was_negative = d < 0
    while d >= -xx:
    	d = x - y
    	x = d
    	
    	is_negative = d < 0
    	if is_negative != was_negative:
    		print('Marked!')
    	was_negative = is_negative
    	
    	print(d)

    Вариант Сережи не формализует твою потребность. Грубо говоря, там просто числа по смыслу подобраны, но твоя задача не решена.
    Написано
  • Комп или ноут для ue5?

    Владислав Лысков, в сбере личным пользоваться не запретят. Запретят абсолютно любым способом подключать личные тех.средства к корпоративным тех.средствам. При чем запрет будет не просто в ТД вписан, а еще и будет подкреплен штрафами, вызовом к сотрудникам внутренней безопасности и соответствующими мерами со стороны УК.
    Да, людей регулярно садят за уже просто попытку кражи данных. Т.е. вставил мобилу в комп "зарядиться" и пошел сразу на нары.
    Написано
  • Почему перемещение объявления и инициализации переменной на новую строчку кода влияет на результат работы программы?

    @MarkusD Куратор тега C++
    vurdalaq, чтение неинициализированной переменной вносит неопределенное поведение в программу.
    Всегда, везде, в любом смысле.

    Неопределенным поведением, по стандарту C++, является в принципе и вообще любое поведение без каких-либо ограничений. Ожидаемое поведение тоже в этом случае будет неопределенным.
    Не "X засорится", а поведение всего твоего кода прямо начиная с первого for(unsigned i; i < len; i++) уже не определено. С самой первой же итерации этого цикла, если неопределенному поведению вообще заблагорассудится начать хоть одну итерацию этого цикла.

    Иными словами, UB - это то, чего в своем коде категорически нельзя допускать.
    Написано
  • Почему возникает ошибка error C4430 в шаблоне, если выходной тип определен?

    @MarkusD Куратор тега C++
    Павел Соколов, вот. И с этим кодом уже все понятно.
    Тебе уже ответили и ответ действительно решающий. Но тем не менее.
    Смотри на WinAPI. Этот заголовок у тебя подключен через конфигурацию проекта и конфигурацию сборки.
    Эти макросы являются частью SAL, а подробности можно почитать тут.

    Твой стиль кода должен быть таким, чтобы не нарушать стандарт и не биться с библиотечными определениями.
    Написано
  • Почему возникает ошибка error C4430 в шаблоне, если выходной тип определен?

    @MarkusD Куратор тега C++
    Павел Соколов,
    Я не понимаю что я делаю не так

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

    Сформулируй свой вопрос полностью. Покажи наглядно, что у тебя и где лежит. Покажи буквально все, что до этого описывал словами.

    Для шаблона нет разницы, в заголовке к DLL он написан или в каком-либо еще. Шаблон инстанцируется на стадии компиляции и всегда должен быть определен до места своего инстанцирования в модуле трансляции.
    Написано
  • Как использовать потоки в современном C++ в приложении на основе цикла событий?

    @MarkusD Куратор тега C++
    Andrey_Epifantsev , а как тебе объясняли свои советы те, кто тебе эти std::future и std::async рекомендовали?
    Где они тебе советовали использовать эти примитивы и каким образом это должно улучшить, по их мнению, твой код?
    Написано
  • Как переделать код под ООП?

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

    @MarkusD Куратор тега C++
    Вова, я работаю с C++ уже 20 лет и просто знаком со стандартом языка. Понимаю что подобное знание является довольно тонким для обычного пользователя C++, но именно подобные знания позволяют людям не допускать огромное количество ошибок.
    Ну и еще работать в крутую компанию не возьмут без понимания стандарта.
    Написано
  • Как правильно инициализировать константы в 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, ответ отмеченный решением таковым не является. У человека там сплошная эзотерика написана.
    Написано