Форум программистов, компьютерный форум CyberForum.ru

Оценить код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пропал код из .cu http://www.cyberforum.ru/cpp/thread1699738.html
Пропал код из файла с расширением .cu.%-) Восстановить будет мне не сложно. Мне интересно, кто-нибудь до этого с таким сталкивался? До этого сильно загружал видеокарту потом драйвер переставал отвечать и восстанавливался. Не единожды.
C++ Требуется программа для стеганографии (небесплатно) Нужны две программы для стеганографии: первая берёт wav файл и текст, затем выдаёт только немного изменённый wav файл, вторая программа получает на вход изменённый wav файл и выдаёт исходный текст. Всё реализуется на С++, нужно сделать за сутки. Надежда только на вас. http://www.cyberforum.ru/cpp/thread1698528.html
Программа с opencv жрет память C++
Вообщем есть программа, после каждой итерации очищаю память, но все-равно почему то буквально за 2-3 цикла по j, программа падает из-за того что виртуальная память заполняется до отказа. Кто что может подсказать? for (int i = 0; i < 10; i++) { _itoa(i + 1, f1, 10); for (int j = i; j < 10; j++) { _itoa(j + 4, f2, 10);
C++ Указатель на функцию
Доброго времени суток! Кто может посоветовать способ присвоить указателю на функцию значение, т.е. имя функции, если мы не будем указывать его явно в коде, а задади имя функции как std::string. Можно, наверное, через ассоциативный контейнер - ключ - имя функции в формате std::string, значение указатель на функцию, вот только функции разные, и придется много map-ов организовывать. Какие есть еще...
C++ Замер времени работы участка кода http://www.cyberforum.ru/cpp/thread1696528.html
Сразу скажу что меня не интересуют стандартные замеры времени роботы участка кода, так как они показывают время роботы данного участка кода + время роботы других процессов (до момента завершения участка кода) -- это я говорю исходя из роботы планировщиков задач (если я не прав прошу поправте меня). Вопрос состоит в следующем, как замереть время роботы только данного процесса (определенный...
C++ Кроссплатформенный способ переноса файлов Есть какой-нибудь легальный способ кроссплатформенного переноса папок/файлов в C++? Желательно именно способы переноса, а не copy/remove, т.к. внутри одного диска простой перенос будет моментальным. подробнее

Показать сообщение отдельно
hoggy
6419 / 2637 / 458
Регистрация: 15.11.2014
Сообщений: 5,820
Завершенные тесты: 1
02.04.2016, 16:22     Оценить код
Цитата Сообщение от dvano Посмотреть сообщение
оцените код
в целом: код приятен.
с точки зрения чтения, и восприятия,
можно назвать образцово показательным.

Цитата Сообщение от dvano Посмотреть сообщение
Какие советы вы можете дать? Что можно улучшить(исправить)?
можно убить сразу же трех зайцев,
если добавить дополнительную папку,
которая содержала бы примеры использования.

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

с другой - они так же могут выступать в качестве юнит-тестов продукта,
и гарантировать его работоспособность.

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

Цитата Сообщение от dvano Посмотреть сообщение
Как бы вы сделали ту или иную вещь?
рассмотрим код:
C++
1
void insertObject(std::unique_ptr<RenderObject>&& renderObject) noexcept;
такие вещи на мой взгляд лучше прятать в приваты.
потому что std::unique_ptr в данном случае - это деталь реализации.

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

вместо этого:
C++
1
2
3
4
5
6
7
scene.insertObject(
    std::make_unique<Sphere>(
        vec3f{0.0F, 0.0F, 100.0F}, 
        vec3f{0.0F, 0.0F, 255.0F}, 
        50.0F
    )
);
вот такое:
C++
1
2
3
4
5
6
7
// укажите тип объекта, который нужно вставить
// и список аргументов с которыми он должен быть построен
scene.insertObject<Sphere>(
    vec3f{0.0F, 0.0F, 100.0F}, 
    vec3f{0.0F, 0.0F, 255.0F}, 
    50.0F
);
запись получается короче, что уже удобнее само по себе.
и не содержит намеков на детали реализации.

достичь этого можно за счет статической фабрики:

C++
1
2
3
4
5
6
7
8
template<class RenderObject_, class ...Args>
void insertObject(Args&&... args) noexcept
{
    // вызываем приватную деталь реализации
    this->insertObject(
        std::make_unique<RenderObject_>( std::forward<Args>(args)... )
    );
}
получаем тоже самое,
но пользователям больше не нужно знать о факте использования std::unique_ptr.
а вы соответственно, не имеете легаси в связи с этим.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru