Не давно мне довелось поучаствовать в одном интересном проекте. Моя сестра учиться на дизайнера в БВШД, и им дали задание сделать проект на тему Street Interactive. Идея была выбрана довольно простая. На экране демонстрируется анимация движущегося медведя, всем желающим предлагается попасть в него из рогатки импровизированным снежком.Читать полностью »
Рубрика «c++» - 266
DIY или Сделай Сам / Детектор попадания мячика используя OpenCV
2012-02-28 в 6:14, admin, рубрики: c++, DIY, opencv, метки: c++, DIY, opencvQt Software / [Из песочницы] QML и C++. Простой пример связки
2012-02-25 в 1:53, admin, рубрики: c++, QML, для чайников, метки: c++, QML, для чайников
QML технология красивая и радует глаз. Меня она очень заинтересовала, и я решил ее освоить. Но не тут то было, ибо я оказался тупым и беспомощным. Нигде в сети не нашел примера «для чайников» (наверно плохо искал), чтобы с нуля построить простейшее приложение QML и C++ в связке. Везде чего-то не хватало: или не учитывался Qt Creator, или код выдавал ошибки, или отсутствовали целые моменты, которые пользователи должны были сами знать. Официальная документация и примеры здесь на хабре также были с этими недостатками. Вот и решил после долгих попыток и ошибок написать такую статью для начинающих с подробнейшимЧитать полностью »
C++ / Производительность shared_ptr и C++11: почему я не верю библиотекам
2012-02-21 в 15:26, admin, рубрики: atomic, boost, c++, c++0x, c++11, move, shared_ptr, метки: atomic, boost, c++, c++0x, c++11, move, shared_ptrЗдравствуйте!
Оптимизировал я однажды критический участок кода, и был там boost::shared_ptr… И понял я: не верю я библиотекам, хоть и пишут их дядьки умные.
Так вот, оптимизировал я код, и был там такой участок:
auto pRes = boost::static_pointer_cast< TBase >( boost::allocate_shared< TDerived >( TAllocator() ) );
<fontЧитать полностью »
Программирование / [Из песочницы] Почему я выбираю D
2012-02-21 в 11:49, admin, рубрики: c++, языки программирования, метки: c++, языки программированияВместо введения
Добрый день, Читатели.
Хотел бы поделиться со всеми моим скромным опытом выбора языка программирования для своих проектов. Сразу хочу подчеркнуть – я выбирал язык исходя из собственных нужд, и, вполне вероятно, что ваш выбор в аналогичных условиях может быть другим. Все же я искренне надеюсь, что эта статья будет полезной, так как в ней достаточно подробно и аргументировано проводится сравнение D с C++ и C#, а так же упоминаются свыше десяти различных языков, принадлежащих к различным классам и реализующих различные парадигмы. Сам D разрабатывается как высокоуровневый язык для системного и прикладногоЧитать полностью »
Блог компании Инфопульс Украина / Here be dragons
2012-02-21 в 8:08, admin, рубрики: c++, c++11, dragons Просматривая материалы конференции GoingNative 2012 (которую всем программистам на С++ очень советую посмотреть), я обратил внимание на один пример кода:
#include <iostream> struct S { int n; }; struct X { X(int) {} }; void f(void*) { std::cerr << "Pointer!n"; } void f(X) { std::cerr << "X! n"; } int main() { f(S().n); }
Сможете ли вы, не подглядывая в ответ, сказать, что напечатает эта программа и самое главное, почему?
Под катом — предположение разработчика Clang из Google о том, почему этот код работает так, как он работает. Еще раз,Читать полностью »
C++ / [Из песочницы] Компилирование заголовочных файлов или документация на халяву
2012-02-20 в 16:50, admin, рубрики: c++, doxygen, метки: c++, doxygenДля кого эта статья
Вряд ли опытные C++ разработчики найдут что-нибудь новое и интересное в этой статье. Максимум банальную команду
gcc -c -x c++ -I ./ */*/*/*/*.h
которую они и так знают.
А вот если Вы — разработчик начинающий, или только в первый раз строите документацию по своему проекту, или пробовали это однажды, но увидев тот бред, что сгенерировал doxygen, удалили его и забыли как страшный сон, добро пожаловать под кат, скорее всего Вы найдете дальше парочку полезных мыслей.
Введение
Программирование на языке C++ — это в первую очередь анализ существующего кода.
Вот уже несколько лет я принимаю участие вЧитать полностью »
Qt Software / Портирование игры на Nokia N9
2012-02-20 в 5:43, admin, рубрики: c++, Harmattan, MeeGo, nokia, qt, tower defense, метки: c++, Harmattan, MeeGo, nokia, Qt, tower defense
В этой статье речь пойдет о портировании игры Forest Tower Defense на телефон Nokia N9.
Я хорошо знаком с Qt, но плохо с QML, к счастью мне полностью удалось избежать его использования в приложении (да, это возможно!). Весь код в этой статье будет на C++, олдфаги одобряют.
Окно
Главное и единственное окно игры — это QGLWidget
class Widget : public QGLWidget, public Platform
{
Q_OBJECT
//...
Что такое Platform, и как проектировать кросплатформенные игры, можно почитать тут.
Графика
Все рисование происходит в QWidget::paintEvent
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
m_painter = &painter;
Application::instance().render();
flushFragments();
}
Хочу поделитьсяЧитать полностью »
C++ / Тонкости реализации кода библиотеки. Часть вторая
2012-02-18 в 11:08, admin, рубрики: c++, библиотека, организация файлов, метки: c++, библиотека, организация файлов
В предыдущей части был приведен способ, с помощью которого, можно сократить количество кода при использовании классов-помощников и классов из других пространств имен.
В данной статье речь пойдет о том, как можно реализовать размещение элементов библиотеки по файлам. Также будут затронуты вопросы подключения элементов библиотеки в пользовательском коде, и, конечно же, как «рабочие» пространства имен могут помочь в реализации библиотеки.
Подходы, применяемые при организации файлов библиотеки
Для начала определимся, что речь пойдет о библиотеках, весь код которых поставляется в виде заголовочных файлов.Читать полностью »
Profile-guided optimization (далее PGO) — техника оптимизации программы компилятором, нацеленная на увеличение производительности выполнения программы. В отличии от традиционных способов оптимизации анализирующих исключительно исходные коды, PGO использует результаты измерений тестовых запусков оптимизируемой программы для генерации оптимального кода. Тестовые запуски выявляют какие части программы исполняются чаще, а какие реже. Преимущество такого подхода в том что компилятор не строит предположений при выборе способа оптимизации, а базируется на реальных данных, собранных во время выполнения программы. Необходимо учитывать то, что тестовыеЧитать полностью »
C++ / [Из песочницы] Макросы с переменным числом параметров
2012-02-13 в 23:23, admin, рубрики: c plus plus, c++, debug, отладка, метки: c plus plus, c++, debug, отладка Недавно пришлось мне разбираться с одним Open Source проектом. Нужно было разобраться с одной ошибкой. Ошибка была плавающей и проявлялась исключительно на стенде, после получаса раб. Да и то не всегда. Поэтому было принято решение логировать определенные участки кода.
Поэтому была написана простая функция:
void dbg(const char * AMsg);
которая записывала строку в лог. Вскоре оказалось, что такой функции недостаточно и она была переписана в таком виде:
void dbg(const char * AFmt, ...);
т.е. теперь она при помощи функции vfprintf() записывала в файл форматированную строку. По мере роста числа вызовов, захотелось писать в файл еще два параметра, а именно __LINE__ и __FILE__.Читать полностью »