• Можно ли определить тип переменной в удобном виде?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Почитайте про Name mangling

    Эти заковыристые имена создает компилятор. Если заставить его это не делать, то все сломается. Поэтому, кажется, вы всегда будете получать вот такие вот странные имена. Но их можно расшифровать назад (или вот).
    Ответ написан
    2 комментария
  • Что не так с наследованием?

    Nipheris
    @Nipheris Куратор тега C++
    Т.к. и базовый класс и класс-наследник являются шаблонными, то компилятор C++ считает, что члены класса mnoj являются так называемыми "зависимыми идентификаторами" (dependent names). Такие идентификаторы по-умолчанию не включаются в процесс разрешения имён и их нужно "затаскивать" в него явно.

    Вариант 1 (советую его): обращаться к полям базового класса через this: this->index - это вообще хорошая практика - сразу видно, где используется локальная переменная, а где идёт работа с состоянием объекта.
    Вариант 2: использовать using mnoj<T>::index; и using mnoj<T>::mas внутри описания класса mnoj1.
    Ответ написан
    3 комментария
  • Как исправить ошибку "C4996 'strcat': This function or variable may be unsafe"?

    @Sumor
    Попробуйте ввести более 10 символов в word1 и word2 и у вас программа непредсказуемо упадёт.
    Если использовать strcat_s, то она проверит граничные условия и выдаст ошибку, если они не выполняются.
    Для использования strcat_s нужно немного переписать программу - обработать ошибку и знать размер первого буфера.
    Ответ написан
    Комментировать
  • Идеи для передачи серверного ключа для шифрования на клиент?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Самый надежный метод - не передавать ключ на клиент, и он реален:

    Следует использовать надежную и проверенную схему установления доверенного канала - схему Диффи-Хеллмана или аналог.
    Ответ написан
    1 комментарий
  • Какую книгу выбрать для изучения компьютерной графики?

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    Другие ребята советую сразу начинать с С++, третье говорят - изучай сразу компьютерной графику

    Все говорят правильно - сильный специалист знает и то и другое и третье. А времени очень мало.

    Подумай что ты на текущий момент уже изучил.
    Посчитай сколько тебе лет и сколько книжек ты прочитал на текущий момент. Даже банально за счет школы ты должен был прочитать несколько десятков учебников.
    Подумай, стал ли ты сильным специалистом после нескольких десятков книг? Нет?
    Ну так и не думай что одной или десяти книг по программированию будет достаточно чтобы стать сильным программистом. Учить и читать нужно будет ГОРАЗДО больше.

    Основная моя цель - стать сильным специалистом в программирование компьютерной графики.

    Нет смысла искать "лучшую". Дочитай эту, начинай читать следующую. Примерно после 5-10 книг будешь уже сам понимать какие более полезные, какие менее полезные.
    Ответ написан
    4 комментария
  • Какие источники посоветуете для изучения C?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Посоветую использовать поиск. Здесь этот вопрос задавался сотни раз и каждый раз давали пару-тройку ответов с названиями хороших учебников.
    Ответ написан
    1 комментарий
  • Почему из двух функций, стоящих в условии цикла, при определенных условиях выполняется только одна?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Фокус в оптимизации логических операций.
    Если первый операнд AND имеет значение false, то результат будет false независимо от значения второго операнда. Соответственно, вычислять второй операнд смысла нет.
    Аналогично, если первый операнд OR имеет значение true, то результат будет true независимо от значения второго операнда.
    Если вам нужно, чтобы выполнялись обе функции, то решением, как ни странно, будет явный вызов обоих функций в теле цикла с записью результатов выполнения в переменные.
    Ответ написан
    Комментировать
  • Как понять достоин ли ты более лучшей зар.платы или ещё не дорос и не надо высовываться даже?

    opium
    @opium
    Просто люблю качественно работать
    Чувак о каком достоин может быть речь если тебе не хватает грубо говоря на Доширак чтобы не умереть с голоду?
    Тебе повышения зп процентов на 50 чтобы не умереть вот и все, о каком достоинстве может идти речь?
    Или может ты их какого то знатного рода, тогда зачем ты работаешь за еду.
    Я понимаю когда там программист получает 200к и задаётся вопросом может я достоин получать 600к

    В таком случае речь идёт о выживании, либо поднять зп на текущем месте либо устроиться на новую работу и тут думать даже не о чем
    Ответ написан
    21 комментарий
  • Почему не работает перегрузка класса?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Оператор не должен возвращать указатель на объект. Он должен возвращать ссылку.

    Если же у вас указатель, к которому вы применяете операцию ++, то вызывается не перегруженный оператор, а используется арифметика указателей - просто сдвигается адрес в памяти на следующий.

    Попробуйте (*p)++.
    Ответ написан
    2 комментария
  • Как грамотно остановить объект при столкновении?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Ваша проблема в том, что вы допускаете залезание объекта в препятствие, а потом не знаете, как его оттуда вынуть.

    На каждой итерации, вам нужно проверять отрезок прямой, по которому ваш объект шагает и искать внутри этого отрезка такой параметр времени theta, при котором объект начинает касаться стенки.

    После этого вам остается зафиксировать ваш объект в этом положении.

    Поиск пересечения нужно делать аналитически, это быстрее.
    Ответ написан
    Комментировать
  • Лучше изучать c++ или c#?

    sxenguri
    @sxenguri
    Вы задали три вопроса, но я не увидел самого главного. Для чего вам это?
    Прежде, чем переходить к выбору того или иного языка, в первую очередь Вы должны определить для себя, какая сфера Вам интересна, чем Вы хотите заниматься. После этого смотрите, какие языки востребованы в интересующей вас области.
    Язык - это всего лишь инструмент. Зачем Вам нужен инструмент, если Вы пока не знаете, что хотите сделать?
    Попробуйте оба языка. В чём проблема?
    Ответ написан
    Комментировать
  • Как исправить ошибку в реализации перегруженных функций?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    if (res1 = true)

    Тут вы присваиваете переменной res1 значение true и потом смотрите на ее значение в условии.

    Это вызвано тем, что оператор присврения возвращает значение переменной. Т.е. (res1 = true) == true. Если это вставить в if, то это то же самое что if(true).

    Для сравнения нужно использовать "==".

    Но, вообще говоря, if(res1 == true) - очень плохой код. Правильно писать if (res1).
    Ответ написан
    Комментировать
  • Как решить эту ошибку?

    15432
    @15432
    Системный программист ^_^
    Добавить gdi32.dll в импорты линкера
    Ответ написан
    5 комментариев
  • Правильное применение const?

    @romancelover
    программист C++ под Linux
    Параметры функции, объявленные как const ссылки, могут инициализироваться результатом выражения (rvalue), а обычные ссылки, без const - только присваиваемому выражению (lvalue). В С++11 появились также rvalue ссылки, которые могут быть изменяемыми. Сложные объекты лучше передавать в функции по ссылкам (или указателям), чтобы избегать копирования.
    Значит если параметр передаётся по ссылке, то ссылка с const может быть входным параметром функции, а без const - скорее всего выходным (или двунаправленным, который передаётся в функцию и там модифицируется, и служит результатом выполнения). Параметр по ссылке без const может быть входным, но это неудобно - в нём нельзя передать выражение, а только переменную (или в общем случае lvalue). И ещё это сбивает использующих функцию программистов с толку, наводя их на мысль, что параметр по ссылке должен модифицироваться внутри вызываемой функции.

    Сразу понятно назначение параметров, какой параметр входной, какой выходной. Параметр по значению всегда входной, по указателю - аналогично ссылке, с const только входной, без const скорее всего выходной (но не обязательно).
    rvalue ссылки нужны в том случае, если нужно сохранить объект, переданный в функцию, без копирования (объект по const ссылке пришлось бы скопировать внутри функции, а это неоптимально). Параметр по rvalue ссылке - тоже входной параметр функции, как и по const ссылке.
    Ответ написан
    1 комментарий
  • Почему ГПСЧ нужно инициализировать в main()?

    GavriKos
    @GavriKos
    Не должно быть ошибки. Если вы только не в цикле его инициализируете. Приведите код который приводит к ошибке.
    Ответ написан
    4 комментария
  • Правильное применение const?

    Adamos
    @Adamos
    Const имеет смысл использовать всегда, если вы пишете код, который потом будем многократно использоваться (библиотеку, например).
    Использование же const в прикладном коде - это оптимизация. Причем, как правило - преждевременная.
    То есть испортить код таким образом вы вряд ли сможете, а вот стоит ли результат потраченных усилий и постоянного переключения с уровня архитектуры на этот низкоуровневый... эм... как это по-русски - grinding?
    Ответ написан
    Комментировать
  • Как вернуть разные типы из std::function?

    xorknown
    @xorknown
    Будут проблемы - решайте
    Идея так делать невероятно плохая, но если хочется можно использовать std::variant(или std::any) из C++17

    std::function func{[](int z) -> std::variant<X, Y> {
                    if (z>0) {
                        return X();
                    }
    
                    return Y();
                }
            };
    
        std::variant<X, Y> v = func(1);
    Ответ написан
    Комментировать
  • Как переместить содержимое папки Б в папку А?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Воспользоваться std::filesystem
    Ответ написан
    Комментировать