Ответы пользователя по тегу C++
  • Можно ли в C++ передавать массивы в функцию сразу при объявлении?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Можно так:
    #include <iostream>
    
    void func(std::initializer_list<int> data)
    {
    	for(const auto& item : data) {
    		std::cout << item << std::endl;
    	}
    }
    
    int main() {
    	func({1, 2, 3});
    	std::cout << std::endl;
    	func({1, 2, 3, 10, -1, 15});
    	return 0;
    }
    Ответ написан
    2 комментария
  • Актуальная литература по C, C++?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Планирую начать с C

    Зачем? А по C++ советую Прата лекции и упражнения.
    Ответ написан
  • Как взаимодействовать с указателем в структуре через указатель?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    head->nextaddres - ListElement*
    *head->nextaddres - ListElement
    А ещё если у тебя не будет вершины, при вызове метода Empty будет UB
    Ответ написан
    1 комментарий
  • Где взять задания для новичка в C++?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    По знаниям: Прата.С, Введения в цикл for или же переменные, массивы, немного указателей, немного функций и сам цикл for.

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

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Например так:
    #include <iostream>
    
    void printArray(const int * array, size_t len)
    {
    	std::cout << "[ ";
    	for(size_t i = 0; i < len; ++i)
    		std::cout << array[i] << (i == len - 1 ? "" : ", ");
    	std::cout << " ]" << std::endl;
    }
    void _reverseArray(int * first, int *last)
    {
    	int tmp = *first;
    	*first = *last;
    	*last = tmp;
    	if(first < last)
    		_reverseArray(first + 1, last - 1);
    }
    void reverseArray(int * ptr, size_t len)
    {
    	_reverseArray(ptr, ptr + len - 1);
    }
    int main() {
    	int array[] = { 1, 2, 3, 4, 5, 6 };
    	size_t len = sizeof(array) / sizeof(int);
    	printArray(array, len);
    	reverseArray(array, len);
    	printArray(array, len);
    	return 0;
    }
    Ответ написан
    Комментировать
  • (C++)Как возвести целое число в неотрицательную целую степень?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    int power(int x, size_t p) {
    	int answer = 1;
    	for(size_t i = 0; i < p; i++)
    		answer *= x;
    	
    	return answer;
    }
    Ответ написан
  • Вопрос про GUI?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Интересует все про работу с GUI(читал про qt)
    Хорош ли он?

    Да
    возможно ли «вживить» это дело в Вижлу?

    Можно но не нужно
    Либо же нужно что-то отдельно?

    Есть среда специально для Qt(вообще не только для Qt) - Qt Creator
    Ответ написан
    4 комментария
  • Какой выбрать язык программирования?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Почитай лучше это, потом что-нибудь по алгоритмам. А на счёт языка, не особо важно какой, можешь и несколько параллельно учить, если хочешь игры, то изучай математику и какой-нибудь игровой движок, язык программирования знать слишком подробно не обязательно, и главное больше практики.
    Ответ написан
    1 комментарий
  • Как поставить скобки в коде?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    while (a) {
        if (b > c)
            d = c;
        else if (c > d)
            e = f;
        else if (q)
            a = 0;
        else
            b = 0;
    }
    Ответ написан
    2 комментария
  • Как поместить значение переменной в массив?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Используй std::vector
    Ответ написан
    1 комментарий
  • Как получить результат выполнения консольной команды в переменную?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Какая ОС? Универсальный но костыльный метод вам указали выше - писать в файл, только ещё желательно редиректить ошибки отдельно, но я не уверен, что в винде это делается также, как в никсах. Правильный метод - использовать средства ОС, для windows вот первое, что нагуглил https://msdn.microsoft.com/ru-ru/library/windows/d... и соответственно для linux https://stackoverflow.com/questions/478898/how-to-...
    Ещё можно использовать Qt, он сам сделает всё с помощью магии, чтоб работало на разных ОС doc.qt.io/qt-5/qprocess.html
    Ответ написан
  • Header в header'е и можно ли делать игру на одних Header'ах?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Что я только что прочитал? Вы кажется не понимаете, зачем нужны хедеры, там должно быть определения всего что вы используете, а реализация в *.cpp. Распространённая практика - для классов использовать .h с определением и .cpp файл с реализацией, имя файлов совпадает с именем класса, в .h нужно использовать #pragma once или костыль include guard. Напрмер:
    Color.h:
    #pragma once
    
    // или так
    // #ifndef COLOR_H
    // #define COLOR_H
    
    class Color {
    public:
      Color(unsigned char red, unsigned char green, unsigned char blue);
    private:
      unsigned char red, green, blue
    };
    
    // #endif

    Color.cpp:
    #include "Color.h"
    
    Color::Color(unsigned char red, unsigned char green, unsigned char blue)
      : red(red), green(green), blue(blue)
    {
    }

    Из правила есть одно исключение - шаблоны, обычно их пихают в хедер с расширением .hpp, чтоб было видно, что это шаблоны, cpp для шаблонов сделать не получится.
    Можно конечно весь код писать в хедерах, но тогда при малейшем изменении перекомпиливается весь проект.
    Ответ написан
    Комментировать
  • Стоит переходить на DirectX 12?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Стоит не учиться по туториалам, они хороши для демонстрации возможностей и для краткого описания. Я давно ещё читал книгу автора Frank Luna, тогда ещё по DirectX 9, но сейчас у него есть и более свежие, поищите.

    UPD: может стоит рассмотреть OpenGL? Если решишь, то читай супербиблию(это книга так называется)
    Ответ написан
    3 комментария
  • Как сделать сохранения в игре?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Ну очевидно сохранять то, что нужно восстановить при следующем запуске
    Ответ написан
    Комментировать
  • Что почитать на cpp после ооп?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Можно и по qt, если такие есть(пока не находил).

    Подсказка: гуглить по запросу "книги qt5"
    А по сабжу, не забывай писать код, теория - это важно и полезно, но практика важнее.
    Ответ написан
    Комментировать
  • Список объектов с разными template?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    А как вы себе это представляете? Вектор - шаблонный класс и параметр шаблона задаёт тип. Поэтому вам нужно искать что-то готовое для этой цели или мудрить своё. Информацию о типе в любом случае где-то хранить придётся(ну или помнить что куда складывали, но это неудобно и не всегда получится), т.к. элемент контейнера - это просто набор байтов. Я вижу 2 варианта:
    1 выделять память большим куском и где-то сохранять информацию о типе, скажем так:
    до 4 байта - int, до 12 байта - double, до 50 байта - SomeType. Можно хранить в том же блоке данных перед каждым элементом. Для хранения информации о типе в C++ есть RTTI, там не так много возможностей, но всё же.
    2 хранить указатель на void и опять же тип, но на этот раз для каждого элемента.
    Если планируется хранить данные примерно так: [int, int , int, int, double, Color, Color, Color, Color, Color, Color], то можно сэкономить, сохраняя диапазоны.
    Первый вариант лучше тем, что данных не разбросаны по памяти.
    Погуглите, я думаю оба варианта уже кто-то реализовал.

    UPD: набросал на коленке первый вариант https://github.com/DevAlone/c-universal-container/...
    Ответ написан
    2 комментария
  • Какой жанр игр самый сложный в создании?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Если хочешь сделать востребованный продукт, то в первую очередь нужно смотреть на то, что хочет аудитория(ты ж не для себя делаешь), также желательно, чтобы это нравилось тебе.
    Какой жанр игр самый сложный в создании?

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

    Ну, если ты собираешься делать типичную штампованную выживалку с зомбями, коих уже дохрена, то да - говно, если есть оригинальная идея, то нет, сам по себе жанр не может быть говном.
    Что же легче?Rogue-like или выживалка?

    Смотря какая игра.. Можно выживалку сделать, используя ассеты из юниты и немного своего говнокода, а можно придумать абсолютно уникальный мир, как в майнкрафт, например, и реализовать, трудозатраты совершенно разные.
    Ответ написан
  • Путь далее. С++ или ...?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    потому что начитался, что плюсы "теряют актуальность",

    Что значит теряют актуальность? Весь этот ваш веб на плюсах и работает(ну ещё на си): браузеры, базы данных, хипстерские фреймворки вроде node js и т.д. Штамповать говносайты да, на C++ не выгодно и так никто не делает, конечно же.
    да и вакансии посмотрел

    Не там смотрел) Смотри тут linkedin.com
    А по теме, учи программирование. Если нравится геймдев, попробуй unity и unreal.

    UPD:
    Закончил 1-й курс, изучил С++ на уровне десктопных приложений под Win32

    Talk is cheap. Show me the code. (c)
    У нас в универе у многих уровень знания C++ был C с iostream, даже без классов. И "уровень десктопных приложений под Win32" тоже не показатель.
    Ответ написан
    Комментировать
  • Подойдёт ли C++ для создания игр?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    люди сказали что он сложен для новичка - учи Шарп и садись на Юньку.Я уже привык к C++ так, что оторвался от него мне сложно

    Это значит ты не знаешь ни C#, ни C++. А по теме, попробуй и то и другое, что понравится на том и делай, потому что так выбирать будешь до бесконечности.
    Ответ написан
    2 комментария