Ответы пользователя по тегу C++
  • Какую выбрать среду для написания кода на С++?

    @mink_h
    Могу еще посоветовать CodeLite. Очень простой, удобный и бесплатный инструмент для C/C++ разработчика. Можно использовать, как под Windows, так и Linux.
    Установка и использование не вызывает никаких проблем, очень простой и дружественный интерфейс. Единственное, что придется дополнительно сделать - скачать и установить компилятор и отладчик. Для Windows это может быть готовый пакет tdm64-gcc-5.1.0-2, последнюю версию которого всегда можно найти на сайте разработчика.
    Ответ написан
    Комментировать
  • Как создать динамический массив из объектов класса?

    @mink_h Автор вопроса
    И так, нашел несколько способов:

    1. Если компилятор поддерживает стандарт C++ 2011
    Test *objPtr = new Test[COUNT_OBJ] {5, 6, 7, 8};

    2. Реализация того, что было сказано GavriKos
    Test *objPtr = (Test*)calloc(COUNT_OBJ, sizeof(Test));
    memset(objPtr, 0, COUNT_OBJ * sizeof(Test));
    for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i].put_k(i + 5);

    Этот вариант нужно использовать с осторожностью, т.к. память выделяется но не вызываются конструктор и деструктор объекта.

    3. Вариант, представленный Rsa97 в комментариях
    Test **objPtr = new Test*[COUNT_OBJ];
    for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i] = new Test(i + 5);

    4. На мой взгляд, самая удачная реализация с использованием Placement new. На данный способ указал Игорь Иванов
    Test *objPtr = static_cast<Test*>(operator new[] (COUNT_OBJ * sizeof(Test)));
    for (int i = 0; i < COUNT_OBJ; ++i) new (objPtr + i) Test(i + 5);
    Ответ написан
    1 комментарий