Задать вопрос
  • А нужно ли заменять dynamic_cast?

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

    И проблема то еще заключается в том что не только же для ContentUIElement нужен шаблон данных. Например если реализовать следующие элементы с шаблонами данных ItemsControl, DataGrid, Expander, TabControl и т.д. И что мне тогда делать для каждого свой метод в IData?

    Не, не надо. В этом случае надо отходить от просто посетителя, но сохранять инверсию контроля.
    Например, у тебя может быть реализация на базе стратегии. Мне в данный период моей жизни более привлекательным для тебя видится реализация провайдера данных.
    По сути метод в IData у тебя остается только один, но теперь он возвращает ссылку на интерфейс провайдера данных. А уже провайдер данных пусть развивается так, чтобы удовлетворять все потребности в поставках шаблонов данных. Через реализацию посетителя снова или уже через прямой контроль.
    Реализация стратегии будет иметь точку входа в виде все того же метода IData, который уже вернет голову стратегии. А от этой точки входа стратегия уже будет ветвиться сперва по элементу UI, а потом уже по реализации IData. Ну или наоборот, порядок не столь важен.

    Но самое главное всегда - это закрывать задачу ровно настолько, чтобы она была решена. Не больше того. :)
    Поэтому твой подход сейчас поди для тебя на этом этапе подходит лучше всего.
    Написано
  • А нужно ли заменять dynamic_cast?

    @MarkusD Куратор тега C++
    Dyikot, а, вон чего это за шаблоны у тебя. Да, я подумал что ты говоришь о шаблонах из языка.
    Но! И в этом случае тебе тоже dynamic_cast не нужен. У тебя в коде он все равно неправильно применяется.

    Закинь, пожалуйста, этот код в сам вопрос, с уточнениями. Я чуть погодя напишу ответ.
    Если уж совсем коротко, то тебе в этом коде нужно применить инверсию контроля и визитера. В этом случае у тебя не будет необходимости кастить в рантайме вообще, т.к. код будет всегда выполняться для актуального типа объекта.
    Написано
  • А нужно ли заменять dynamic_cast?

    @MarkusD Куратор тега C++
    Dyikot , коротко. Нет, вообще не оптимальный. Ты время трансляции и время исполнения перепутал между собой. Из-за этого тебе приходится делать крайне странные вещи. В вопросе у тебя ноль конкретики, но уже имеющееся отдаленное описание выглядит как очень плохой дизайн.
    В тот самый момент, когда dynamic_cast соприкасается с шаблонным кодом, тебе нужно понять что плохо написано просто всё.

    А чтобы я написал ответ, тебе нужно сопроводить вопрос как можно более полным описанием работы своего кода с примерами же своего кода. И главную часть в этом описании должны занимать ответы на вопрос "Зачем это здесь?" и "Почему нельзя иначе?".
    Написано
  • Как перепрошить Asus Transformer Pad TF303CL (K014)?

    Серёга,
    значит сейчас не получится это сделать?

    По всей видимости уже не получится. Я бегло поискал по профильным форумам ASUS и увидел что с 21-го где-то года в целом все старые планшеты ASUS не удается перепрошить. И поддержка говорит одно, если коротко: Выкинь и купи новый.
    Написано
  • Как перепрошить Asus Transformer Pad TF303CL (K014)?

    Серёга, не надо "на вы". Я один и никого не представляю.

    Чтобы правильно поставить рут, нужно разблокировать бутлоадер. Процедура разблокировки на момент 14-15 годов была хорошо описана прямо на сайте поддержки ASUS для 303-го. И APK для разблокировки там тоже был, который всю работу и выполнял.
    Если я все правильно вижу сейчас, есть проблема с прикладными серверами ASUS, которые используются в процессе разблокировки. Адреса или поменялись, или ASUS эти сервера отключил.
    Написано
  • Как перепрошить Asus Transformer Pad TF303CL (K014)?

    Серёга, я что-то не пойму. У тебя проблема бутлоадер разблокировать? Чем же тебе официальный метод с сайта ТП ASUS не подходит? У меня 303й был, я его прошливал и рутовал для своих нужд. Все нормально работало прямо по инструкции от производителя еще в 2014 году.
    Написано
  • Github перестал отправлять sms на российские номера?

    DVoropaev , из-за вторичных санкций 23-го года и очередного пакета осенью 24-го года гитхаб отказался поддерживать отправку смс на номера РФ.
    Написано
  • Как определить виртуальные методы в полной специализации шаблона?

    @MarkusD Куратор тега C++
    kriptonus , ты лучше расскажи какую задачу ты хочешь вот таким кодом решить.
    Написанное странно выглядит даже не с т.з. языка, а с т.з. применения. Этот код непонятный и выглядит так, будто ты этим кодом хочешь закрыть никак с этим кодом не связанную задачу. Разумеется, даже если тебе что-то подскажут, у тебя ничего в результате не выйдет.
    Поэтому я и прошу рассказать о самой задаче.
    Написано
  • Почему возникает ошибка C2512 в конструкторе с std::initializer_list?

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

    Это замечательно, только неправда. Ошибки тебе пишет именно транслятор. С компилятором ты вообще никак сейчас не взаимодействуешь.

    По сути дела. У тебя нет знаний о процессе конструирования объекта. Из-за этого ты не понимаешь что в момент начала выполнения тела любого конструктора type arr[N]; у тебя уже сконструирован. И транслятор тебе сообщает именно об этом. А подходящего конструктора по умолчанию c_function у тебя в коде вообще нет. Он удален по умолчанию. Потому что ты так написал, чтобы он стал удаленным по умолчанию.

    Wataru в своем ответе тебе все правильно описал. И проблему, и метод решения проблемы.
    Я с деталями и уточнениями подключусь если для этого будет смысл.
    Написано
  • Почему возникает ошибка C2512 в конструкторе с std::initializer_list?

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

    И хорошо что не понимаешь. Скажи спасибо что по твою душу полиция еще не пришла. Спустя некоторое время ситуация станет такой, как в Южной Корее по отношению к читерам. Там читерство - уголовное преступление с тюремным сроком.
    Тебя заметили и отмаркировали как читера. Тебе больше нет места в играх Селлов. Это - твое наказание.
    Написано
  • Почему окружность получается отрисованной не ровно?

    @MarkusD Куратор тега C++
    Wataru, SDL настолько примитивен, насколько примитивен GPU в конце цепочки его управления. :)
    SDL - это надстройка над OGL второго или третьего порядка. Автор просто не включил тот самый пресловутый алиасинг для презентации экрана. Он по умолчанию выключен.
    Написано
  • Где найти чистые исходники мобильного сервера SAMP / CRMP?

    @MarkusD Куратор тега C++
    Prg, у тебя спросили конкретное уточнение.
    В современном мире, в моменте 2025-го года, чистота исходного кода определяется мерой вмешательства нейросеток в тот самый изначально чистый код. И чем больше это вмешательство, тем грязнее код.
    Тебя интересует такая мера чистоты кода? Или же ты под чистотой подразумеваешь что-то свое личное?
    Тебя не понимают. Потрудись исправить ситуацию, допущенную с твоей же стороны.
    Написано
  • Как работает объявление переменных разных типов данных?

    pasha_nevalyasha, если появился другой вопрос, то и создавай другой вопрос. В этом вопросе ответы получены и решение найдено.
    Правилами запрещено размещать несколько разнородных вопросов в одном.
    Написано
  • В visual studio для c++ пишет ошибки E0070. Как их убрать?

    @MarkusD Куратор тега C++
    Dyikot, ну вот. Поступают уточнения по контексту проблемы. Это клево. :)
    Давай коротко скажу. Даже в 25-м году пенять на неполную поддержку C++20 все еще рано.
    Да, уже вышел 23-й стандарт. Да, уже готовится фиксация 26-го стандарта. И что? подавляющее большинство производственного кода как было на C++17 и ранних стандартах, так и остается.
    Стимула быстро и точно вводить полную поддержку C++20 нет ни у кого из разработчиков трансляторов.
    Да, вот тут у тебя отрыгнуло студию. Нет, это не показатель. Потому что в другом месте отрыгнет GCC или Clang. Или Xcode дуба даст. Или плойкин/боксовый/сычевый транслятор, которые базируются на тех же LLVM и GCC. Или андроид тебе скажет: "А мы такое не поддерживаем, держите заглушечку".

    И я сейчас не занимаюсь адвокатурой проблемы в студии. Но вот о чем говорю: Ты ведь уже создал тикет в поддержке студии со своей проблемой? Создал же? Поди нет. А обсуждать проблему надо там. И людей надо туда звать, чтобы разработчики студии поскорее чесаться начали для исправления проблемы. Я так делаю с каждой проблемой поддержки стандарта, с которой сталкиваюсь. И мои тикеты довольно хорошо закрывают.
    Написано
  • В visual studio для c++ пишет ошибки E0070. Как их убрать?

    @MarkusD Куратор тега C++
    Dyikot, пока тут тоже не видно причины. Могу только сказать, что работая со студиями начиная с 2005-й и в шаблонах я такую ошибку видел только по делу. У меня бывают и поглубже цепочки псевдонимов, но вот поведения как у тебя я не наблюдал.

    В чем обычно причина такого поведения студии. У тебя есть проект, в котором есть шаблон в одном заголовке и некоторое подмножество псевдонимов этого шаблона в некотором наборе других заголовков. Проблема имеет место тогда, когда порядок включения заголовков перепутан между определением шаблона и определениями псевдонимов.
    При этом трансляция может проходить правильно потому что в файлах исходного кода, случайно или спланированно, порядок восстанавливается простым более ранним включением заголовка с шаблоном.
    Получить такую проблему в проекте с более чем 10 файлами проще простого. А чтобы разобраться в ней, нужно как минимум получить выдачу препроцессора, чего не умеют не только лишь все.

    Иными словами, это не столько проблема кода, сколько проблема структуры проекта и организации связей между файлами проекта.
    Написано
  • В visual studio для c++ пишет ошибки E0070. Как их убрать?

    @MarkusD Куратор тега C++
    Dyikot, рисуночки лишние (правила нарушают) и ни о чем не говорят по факту. Достаточно приложить лог сборки. Там все видно.
    E0070 говорит о том, что ты пробуешь пользоваться экземпляром определенного типа там, где этот тип еще не является полным.

    Опять же я тысячу раз видел как сборка при этом успешная, но ошибка использования неполного типа все равно есть и отображается правильно. Тысячу раз видел как люди пеняют на студию, а по сути у самих просто руки кривые и знаний нет.
    Ты не приводишь контекст относительно условий и места этой ошибки, а именно в контексте вся суть твоей проблемы.
    Написано
  • Почему размер .so в Android в разы больше чем аналогичный .dll для Windows?

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

    Спасибо за ответ, разобрался - нужно было llvm-strip сделать.

    Это был не ответ, а комментарий. Ты точно разобрался? Тогда напиши грамотный ответ в области ответов и отметь его решением.
    Ты правильно понял что делает llvm-strip? Это поведение точно то, которое тебе нужно? Или ты просто оценил выполненную работу через размер выходного файла и успокоился на этом?
    Написано
  • Почему возникает ошибка при вызове вирутального метода в "operator="?

    @MarkusD Куратор тега C++
    Wataru , есть неточность, она вводит в заблуждение.
    Во-вторых, это проблема из-за правил поиска операторов. Они ищутся только в типах, которые участвуют в выражении, т.е. int и WidthProperty.

    Не из-за правила поиска операторов. Операторы ищутся по ADL по умолчанию или через QNL если постараться. Конкретно у автора вопроса действует правило инстанцирования методов шаблона. Запрос по ADL не приведет к инстанцированию, т.к. ADL опирается только на набор уже инстанцированных методов. Эту ключевую особенность можно, кстати, использовать в целях проверки доступности типов или вообще счетчик сделать, например.
    И вот чтобы оператор здесь у автора стал доступен после инстанцирования типа, его нужно явно инстанцировать в наследнике выражением, которое ты и привел в примере.
    Написано
  • Подключение VPN на клиенте через оптоволокно?

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

    Проблема - твоя, не наша. Чтобы ее описать для нас, тебе нужно обрести некоторое базовое образование самостоятельно. В правильно заданном вопросе кроется половина ответа. Это означает что для получения ответа нужна грамотность при составлении своего вопроса.
    Написано