Задать вопрос
  • Как правильно выстроить логику кода с соблюдением принципов ООП?

    @MarkusD Куратор тега C++
    Ben L,
    и одному из них придется получить свойства от друнгого.

    минуя публичный интерфейс и, собственно, инвариант типа?
  • Как правильно выстроить логику кода с соблюдением принципов ООП?

    @MarkusD Куратор тега C++
    lipa44, так не пойдет. П3.8 регламента работы сервиса.
    Тебе стоит удалить изображения и вставить код текстом. Мне мои глаза дороже, я не буду читать мыльный текст с изображений.
  • Как правильно выстроить логику кода с соблюдением принципов ООП?

    @MarkusD Куратор тега C++
    lipa44,
    Я подключил к заголовочному файлу другой заголовочные файл, который называется «решение кубика», но после попытки объявить элемент класса кубик в этом заголовочном файле или принять в качестве параметра функции, мне среда разработки говорит (can’t resolve type “rubikCube”), хотя я просто создаю/принимаю переменную того типа, которая у меня прописана в заголовочном файле, который я подключил.

    Давай вот этот момент посмотрим в твоем коде. Выпиши в сокращенном виде свои заголовки, оставив в них только описываемые тобой строки кода.
    У тебя должно получиться что-то вроде этого
    // cube.h
    ...
    #include ???
    ...
    class Cube
    {
    ...
    };
    
    // solutions.h
    ...
    class Solution
    {
    ...
    };

    Со всем остальным будем разбираться по ходу дела.
  • Как правильно выстроить логику кода с соблюдением принципов ООП?

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

    Такие алгоритмы решения уже неправильные.
    реально ли это на практике и у меня просто не получается это сделать или так и должно быть?

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

    Почему заголовочные файлы должен видеть именно класс, а не транслятор твоего кода? Почему класс кубика должен иметь родителя? Почему поворот грани должен быть именно типом, а не функцией? Почему шаг решения задачи должен быть типом, а не функцией?
  • Паттерн "Фабричный метод": как получить конкретный продукт из конкретной фабрики?

    ragnar_ok , ознакомься с вопросом и его решением.
    У тебя точно такая же путаница в голове сложилась, как и у автора того вопроса.
    И вот еще один вопрос на ту же тему, для большей конкретики.
  • Что означают просто { тут блок кода } в с++?

    @MarkusD Куратор тега C++
    IliaNeverov, на будущее. Прояви внимательность. Я попросил у тебя код вокруг участка, а не внутри него.
    Текущие решения все верно объясняют.
  • Что означают просто { тут блок кода } в с++?

    @MarkusD Куратор тега C++
    IliaNeverov , все зависит от контекста окружающего кода.
    Тебе надо показать код вокруг интересующего тебя участка.
  • Почему код неработает?

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

    AnnPartovi
    Мозг человека имеет с рождения способность распознать цвета, звуки, образы, лица и кучу-кучу другой информации

    Нет. Не имеет он такой способности с рождения. Бинокулярность зрения к ребенку приходит только с практикой использования глазных мышц в первый месяц жизни. Позже приходит и фокусировка на объектах. Еще позже - способность распознавать образы. Сложные объекты, вроде лиц людей, дети распознавать способны только в конце первого года жизни. Некоторые дети - итого позже, что может стать причиной ложного диагноза нарушения зрения.
    Тебе стоит почитать о развитии детского организма в первые годы его жизни.
    Все что есть у человеческого мозга от рождения - это высокий уровень нейропластичности.
  • Как привязать текстуру к определенному VAO?

    @MarkusD Куратор тега C++
    IliaNeverov, если описывать словами, то в идеале тебе потребуется N текстур с абсолютно идентичной топологией. Далее тебе потребуется геометрия, на которую абсолютно любая из N текстур будет накладываться абсолютно идентично с остальными.
    Ты получаешь пул из N текстур и персистентную геометрию.
    Далее тебе потребуется N буферов констант, в каждом из которых будет просто индекс слота текстуры.
    Твой шейдер вершин должен принимать геометрию и дописывать в нее индекс из текстуры подключенного константного буфера. А растровый шейдер просто должен семплировать текстуру из слота с требуемым индексом.
    Все. Это будет твоим простым решением.
  • Как привязать текстуру к определенному VAO?

    @MarkusD Куратор тега C++
    IliaNeverov , привязать текстуру к VAO невозможно. Для конвейера топология твоей геометрии, наличие на ней материалов и связанные с этим всем шейдеры являются всего лишь конструкционными элементами. Это тебе самому, в своем коде, своими логическими конструкциями необходимо задать требуемые для тебя связи между текстурами, шейдерами, вершинами и индексами со всем прочим.
    Текстурные блоки - это одно. Текстурные слоты - это другое. Текстурные блоки, или блоки растеризации, разведены непосредственно на кристалле GPU и отвечают за процессинг растеризации.
    Текстурные слоты шейдерной программы позволяют для одной геометрии задать несколько (до 16ти для тебя) текстур. При этом, действительно, можно добиться результата, когда геометрия будет одна и отображаться на ней будет только одна текстура (из 16ти), но при каждой отрисовке отображаться будет другая текстура.
    Все зависит от того, какой шейдер ты поставишь для обработки твоей геометрии.
  • Какая ошибка в коде?

    @MarkusD Куратор тега C++
    mercy_smile , а вопрос у тебя в чем?
  • Какой тип данных использовать?

    @MarkusD Куратор тега C++
    Mag1str, куда уж детальней? Ты ведь написал уже код сортировки по первому символу. Тебе надо чтобы когда первые символы одинаковы, сортировка была по третьему символу. Вот и все детали. Если этот код твой, то ты знаешь как это сделать.
  • Как передать одномерный массив из одной функции в другую?

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

    @MarkusD Куратор тега C++
    whatislov , блочность кода в твоих примерах страдает катастрофически. Код нечитаем. Тебе стоит сделать исправления своего кода чтобы его можно было читать.

    int func (int **mas, int n)
    Почему тип результата функции у тебя именно такой? Как ты можешь обосновать необходимость именно такого типа результата?

    return masb[i];
    Почему результат возвращается именно таким выражением? Тут у тебя Buffer Overrun [?] присутствует.
    Как ты можешь оправдать необходимость именно такого выражения для формирования результата функции?

    Сейчас вызов func приводит к утечке памяти. Как ты можешь это исправить?
  • Как исправить ошибку конструктора класса c++?

    @MarkusD Куратор тега C++
    Данил Васькевич , приведенный код не содержит конструктора копирования [?]. У тебя в коде приведен разрушающий конструктор, использование которого крайне опасно для всего остального кода.
    Тебе требуется переписать разрушающий конструктор в конструктор копирования.
  • Как копировать поведение типа, переданного аргументом шаблона класса?

    @MarkusD Куратор тега C++
    Игорь Журавлёв, о каком именно полном копировании ты пишешь?
    Твои слова сейчас непонятны.
  • Размер MTU - суммирование пакетов возможно?

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

    я же не про буферизацию на моем компе, я про буферизацию на маршруте.

    Буферизации на маршруте не существует. IP пакет посылается по некоторому маршруту, на котором он может потеряться по пути или прийти с искажениями. В этом случае засчитывается потеря пакета. TCP позволяет приемнику уведомить источник пакета о потере чтобы тот провел повторную отсылку. UDP потере не уведомляет вообще никак и никого. Датаграмма потерялась да и бог с ней.
    Ты только представь себе это. Тут у тебя 300МБит/сек канал, а дальше каналы идут шириной уже в гигабиты и терабиты. И все вот это буферизировать на каждом узле? Лично у меня такое даже в фантазию не укладывается.
    Кисель по вечерам - это издержки загрузки каналов, в результате чего твой маршрут строится далеко не оптимальным образом.

    а значение MTU не входит влияет на условия?

    Если у тебя нет доверия к моим словам, то лучше будет обратиться к документам по маршрутизации. Например.

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

    Это закрытая информация. Читай что этих данных ни у кого нет и разглашены они быть не могут.
    На отзывчивость игры это никак не влияет потому что сервера всегда строго балансируются и рассчитываются так, чтобы ни один игрок не чувствовал проблем с производительностью.
    Такие вещи пользователей волновать не должны.
  • Размер MTU - суммирование пакетов возможно?

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

    Близы - не дураки. Были "не дураками" когда делали Overwatch. Сейчас уже похуже. Протокол OW я неплохо знаю, там все очень качественно и MTU маршрута там определяется именно через PMTUD. Статистика из Wireshark у тебя верная. Игра крайне редко подходит к порогу MTU для UDP.

    Все это длилось недели две гдето, пока меня не осенило...

    Выводы неверные. При IP MTU в 700Б для UDP максимальный размер пакета будет еще меньше. Сетевой протокол OW делит датаграмму на два сегмента, в одном сегменте реализуется канал скоростной доставки данных, а в другом - канал достоверной доставки данных. Голосовой чат относится к потоку со скоростной доставкой данных с низким приоритетом. Высокоприоритетными являются потоки репликации мира. Главным же в пакете является канал достоверной доставки данных. Вот и все.
    Ты просто зарезал себе ширину пропускания данных для скоростной доставки и голосовой чат просто перестал помещаться. Это не ошибка, а мера оптимизации протокола, чтобы обеспечить тебе сравнимый игровой опыт в твоих условиях.

    Я думаю еще должен влиять bufferbloat и кстати возможно размер пакета както влияет на буфферизацию...

    Ширина твоего сетевого канала составляет 300МБит/сек, т.е. где-то около 39321600Б/сек. Качественный MTU имеет размер 1472Б. За секунду твой канал переварит 26713 таких пакета без намека на буферизацию. Игре буквально незачем слать столько данных.
    Поставишь ты MTU 4-6КБ, ничего не изменится. Разница с шириной твоего канала составляет порядки. Но игра, опять же, не будет пользоваться твоими локальными настройками, она будет руководствоваться настройками сетевого маршрута. И, опять же, не забывай про шейпинг и фрагментацию. Это - то, что уготовано твоим жирным пакетам на маршруте. Шейпинг приведет к потере данных. Фрагментация приведет к снижению скорости доставки или потере датаграммы.

    Для игр типа OW буферизация является критической проблемой, поэтому на канале связи игры она всегда отключена. Пакеты всегда отправляются в сеть как только они переданы в сетевой интерфейс и читаются как только они приходят из сети. Именно это ты и видишь в статистике Wireshark.

    не должен играть... так точнее :)

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