• Как писать тесты?

    MAKAPOH
    @MAKAPOH
    многостаночник
    Если речь идёт о модульных тестах то по сути это отдельные маленькие програмки которые проверяют работоспособность различных частей вашего проекта. В принципе это могут быть отдельные проекты в IDE. Для облегчения написания таких программ существуют специализированые библиотеки вроде google test.
    Ответ написан
    Комментировать
  • Как изменять значения переменных другого класса в C++?

    @Alexander1705
    Первое:
    Если пишите на C++ и используете заголовочные файлы С, их принято называть ctime, а не time.h

    Второе:
    Для псевдослучайных чисел в C++ используйте заголовочный файл random:
    #include <random>
    ...
    std::random_device rd;
    std::cout << rd() % 10;


    Третье:
    Если вам нужен массив, используйте массив. То что вы написали - очень странный костыль.
    Если нужно заполнить массив случайными числами, напишите функцию:
    void fill_with_random(int* arr, size_t n)
    {
        random_device rand;
        for (size_t i = 0; i < n; ++i)
        {
            arr[i] = rand() % 21 - 10; 
        }
    }


    Четвёртое:
    cout << y[0][0]; //все прекрасно выводится
    /*но если попробовать сделать y[0][0]+=1; то выводится ошибка "выражение должно быть допустимым для изменения левосторонним значением"*/

    Естественно, так происходит потому, что в вашем классе (который и не нужен совсем) вы возвращаете число, там где ожидается ссылка:
    int operator [](int i)
    {
        return x[i];
    }

    Заменить на:
    int& operator [](int i)
    {
        return x[i];
    }


    Пятое:
    int  operator [](int i)
    {
        return y[i][0]; /*совершенно непонятно, какую роль здесь играет [0], и почему не работает с просто return y[i]... при изменении [0] на любое другое число, результат не меняется...*/
    }

    Непонятно потому, что его там и не должно быть. operator[] должен давать доступ к строке (т.е. массиву). А уже второй operator[] будет относится к массиву и возвратит ссылку на элемент.
    massiv& operator [](int i)
    {
        return y[i];
    }


    Шестое:
    Если нужна матрица, используйте двумерный массив и не изобретайте велосипед. Если класс всё же необходим, например, если нужно добавить методы для работы с матрицей, можно написать такой класс, используя двумерный массив:
    class Matrix
    {
    public:
        Matrix() {}
        int* operator[] (size_t i)
        {
            return &arr[i][0]; // Указатель на первый элемент i-ой строки.
        }
    private:
        int arr[5][5];
    }


    Седьмое:
    Классы принято называть с большой буквы. И пожалуйста, не называйте их транслитом.
    Массив - Array
    Матрица - Matrix
    Ответ написан
    Комментировать
  • Ключ для приложения?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Распихать по разным местам приложения обфусцированный код, который будет проверять валидность ключа, и который потом (если надо) все равно нафиг поломают.

    Лучшая защита - вынос коммерчески значимого функционала на внешний сервер.
    Ответ написан
    1 комментарий
  • Порядок инициализации?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    en.cppreference.com/w/cpp/language/initializer_list
    struct S {
        int n = 42;
        S() : n(7) {} // will set n to 7, not 42
    };
    Ответ написан
    Комментировать
  • Можно сказать что у компилятора из Android SDK свой диалект Java?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    у Android своя реализация Java Runtime, так что метод main ему не нужен, там чуточку другие правила в этом плане.

    Считайте что это просто отдельная реализация Java. Но с точки зрения синтаксиса различий нет, так что говорить о другому диалекте не приходится.
    Ответ написан
    2 комментария
  • Модульность в C++ как это может выглядеть?

    AxisPod
    @AxisPod
    Главный вопрос, когда будет, учитывая что C++17 обрезали по полной. Дедушки всё наиграться в своей песочнице не могут.
    Ответ написан
    Комментировать
  • Модульность в C++ как это может выглядеть?

    Nipheris
    @Nipheris Куратор тега C++
    Пакеты Джавы и сборки Дотнета - это про модули в терминах крупной структуры приложения, они тут не при чем.
    Речь идет о модулях на уровне программного кода.
    Хотите примерно понять как это будет выглядеть - посмотрите, например, на юниты в Паскале. Это примерно и есть то, что хотят получить в конечном счёте - возможность по-человечески, на уровне языка, объявлять интерфейсы модулей, подключать их друг к другу, следить за зависимостями между модулями (разве что модули C++ вроде как не привязываются к единице компиляции, в отличие от юнитов Паскаля).
    Сейчас в C++ это достигается большим хаком на уровне препроцессора (а не компилятора языка), называющимся include-файлы. Этот механизм, основанный на правиле "много объявлений, одно определение", унаследован из Си, и по сути представляет собой замену отсутствующей возможности передавать метаданные от одной единицы компиляции к другой при сборке проекта. С помощью инклудов вы напихиваете в один файл ВСЕ, что может потребоваться компилятору. По факту выливается в то, что бОльшая часть единицы компиляции после обработки препроцессором - это содержимое инклуд-файлов. И всё это обрабатывается компилятором каждый раз заново (в каждой единице компиляции). В Си это еще куда ни шло, но в плюсах, где многие библиотеки содержат тяжелый шаблонный код, это становится совсем печальным. Помимо этого, сама работа с инклудами - это непростая практика, и если следовать ей неверно, особенно новичкам, они могут получить от компилятора удивительнейшие ошибки. За примером далеко ходить не надо - попробуйте в большом проекте не ставить защиту от множественного инклуда.
    Вся эта препроцессорная магия красоты и прозрачности языку не добавляет. Пока в других языках пишут "package foobar" и "import foobar", мы пишем "#pragma once" или даже "#ifndef FOOBAR_H ...". Уже грустно как-то становится.

    Вышесказанное в одно предложение: модули хотят сделать настоящими, вместо имитации средствами препроцессора.
    Ответ написан
    Комментировать
  • Модульность в C++ как это может выглядеть?

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

    Vadiok
    @Vadiok
    Веб разработчик
    Нельзя на 100% быть уверенным, что присваиваемое значение не придется как-то обрабатывать (например, приводить преобразование значение имени из "иванов ИВАН" в "Иванов Иван"). Если пользоваться сеттерами, то доп. обработка реализуется внутри класса и все. Если значения устанавливались напрямую через свойства, то придется возвращаться к использованию сеттеров, попутно переписывая присвоение свойств объектам класса во всех местах, где объекты этого класса используются.
    Ответ написан
    Комментировать
  • ООП головного мозга?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ну Вы же не летите из РФ в Европу через Австралию?)
    Зачем тут то так делать, когда это явно не нужно?!

    Есть внутренние переменные класса, которые служат для внутренних вычислений, а есть именно те, которые служат для задания свойств объекту класса без лишних действий (иначе: в самом простом случае - getter/setter, в более сложном - именованый метод).
    Ответ написан
    Комментировать
  • ООП головного мозга?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Когда вы пишете лабораторку или собственный маленький проектик, то можете делать как вам угодно.
    А теперь представьте себе ситуацию когда в команде программистов вы написали класс с публичными переменными, а потом подошел руководитель проекта и сказал что на каждое присваивание переменной надо делать запись в лог-файл. Теперь все программисты, которые пользовались вашим классом, вместо работы переписывают код с переменных на сеттеры.

    Советую почитать "Совершенный код", чтобы не задавать подобные вопросы.
    Ответ написан
    2 комментария
  • Не холивара ради, но что лучше Eclipse VS Netbeans?

    badprogrammist
    @badprogrammist
    Senior java developer
    Netbeans для новичка более "дружелюбна", но потом "слезть" с нее тяжеловато будет. А "слезать" придется, потому что есть ряд недостатков и поддержки некоторых технологии
    Ответ написан
    Комментировать
  • Платформы Java?

    @mvsavkin
    SE, проекты Maven-ом собирать, там если что то надо, укажешь дополнительные зависимости. И лучше поконкретнее изучить ядро.(Коллекции, полиморфизм, наследование, static, I/O, исключения, многопоточность).
    Ответ написан
    Комментировать
  • Сравнение двух фотографий?

    @AlexSku
    не буду отвечать из-за модератора
    MatLab: Toolbox'ы 'Computer Vision' и 'Image Processing'
    Ответ написан
    Комментировать
  • Платформы Java?

    Смотря для каких целей. Если вы только начинаете вам и SE будет достаточно пока вы все усвоите)
    Ответ написан
    Комментировать
  • Платформы Java?

    zolt85
    @zolt85
    Программист
    Для начала Вам достаточно SE версии JDK.
    Ответ написан
    2 комментария
  • Платформы Java?

    Konstantin18ko
    @Konstantin18ko
    Стоматолог
    SE - это база, EE - так сказать надстройка (расширяет SE).
    Лично моя рекомендация - сразу EE, ибо потом начнется нужна библиотека mail.* и еще какая нибудь.

    Так сказать.
    public class SE extends EE {}
    Ответ написан
    4 комментария
  • Сравнение двух фотографий?

    @IceJOKER
    Web/Android developer
    Вроде то, что вам нужно - opencv.org
    docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutor...
    Ответ написан
    Комментировать
  • IDE + нормальный компилятор Lisp для Windows?

    @ElMachete
    Из бесплатных реализаций Common Lisp на данный момент лучшая, по моему мнению, SBCL. Для создания исполняемого файла используется sb-ext:save-lisp-and-die.
    Так же можно посмотреть в сторону Clozure CL.

    В плане IDE - в данный момент без вариантов - Emacs + SLIME.
    По настройке среды разработки статьи на хабре:
    Настройка SBCL и среды разработки SLIME под Window...
    Common Lisp IDE
    Ответ написан
    Комментировать