kidar2, вы задали вопрос с тегом "алгоритмы", хотя ищете готовое решение. Вам дали ответы, которые вам, очевидно, не нравятся, потому что вы спрашиваете не то, что ищете, и сказали, как найти первой же ссылкой в гугле то, что вам действительно надо.
Экие грубияны и бездельники!
Если вы подозреваете скрипт в неверной работе - логируйте и смотрите, что происходит, а не кидайте все в /dev/null. Собственно, логи могут быть полезны даже в том случае, если вы пока ничего не подозреваете.
Safronov_Alexei, поскольку вы решили, что нашли ответ, уточню: есть много программ, которые выдают PDF. Сам по себе формат позволяет создать хаос, как уже сказал Алексей. Но, конечно, какой-нибудь офисный пакет никакого особенного хаоса не создает - гонит текст подряд, и этот текст можно вычленить и даже определить размер шрифта, цвет и прочее.
Однако стоит понимать, что решение заведомо ущербно и у вас нет никакой гарантии, что следующий PDF (особенно если в нем окажутся таблицы и графики) не превратится на выходе в тыкву. Используя эту библиотеку и полагаясь на ее работу, вы сами закладываете в программу слабое звено, исправить которое никак не сможете.
Safronov_Alexei, нужная информация в PDF хранится в виде:
задать цвет 100% черный
выбрать шрифт Pragmatica 12pt высотой 10pt шириной
перейти по координатам 100 500
вывести строку "Хрен тебе, а не преобразование"
перейти по координатам 100 600
вывести строку "PDF-файла в сколько-нибудь"
задать цвет 0% голубой 100% малиновый 100% желтый 0% черный
выбрать шрифт PragmaticaBold 12pt высотой 10pt шириной
перейти по координатам 100 700
вывести строку "осмысленный"
задать цвет 100% черный
задать шрифт Pragmatica 12pt высотой 10pt шириной
перейти по координатам 300 700
вывести строку "HTML-код"
Это всего одно предложение с одним словом, выделенным полужирным красным, разбитое в абзац на три строки.
Nicky23, ну да, при переборе списка он не критичен, так как касается только отрисовки, а если вы будете выполнять ее внутри класса - так он-то знает, чей он наследник.
Nicky23, окей, множественное наследование - обязательно. Нюанс в том, что обращение к функциям класса Color понадобится только внутри метода draw класса Circle, унаследованного им от Figure. Поэтому внутри списка он по-прежнему может быть преставлен просто как Figure.
Nicky23, я и говорю про другой способ - тот, который применяется в паттернах. Если некий код уникален для какого-то наследника базового класса, то место этого кода - внутри самого класса.
А внешнее определение, какой это класс, и код, работающий только с ним, во внешнем коде - это bad practice. Проще говоря, говнокод.
Nicky23, я понимаю, что вам дорога самостоятельно придуманная архитектура, но очень рекомендую присмотреться к ее адекватности. В некоторых языках в принципе не предусмотрено множественное наследование - для него должны быть очень веские причины, и не факт, что они у вас на самом деле есть. Если Color дает какой-то довольно базовый функционал - может быть, просто унаследовать от него Figure?
Боюсь, что нет. Вы только начали разбираться.
Суть в том, что ваш производный класс Ball является Figure, так что вы вполне можете писать и figure_list.push_back(new Ball());
но правильное использование такого списка не предполагает определения, к какому производному классу принадлежит каждый его элемент. К ним нужно обращаться только и именно как к Figure. При этом класс Figure должен иметь достаточно богатый интерфейс, чтобы скрыть под ним все различия классов-наследников. Например, он может иметь метод getRect, возвращающий габариты фигуры (описанный по-своему в круге и точке), метод draw(DrawContext *dc, int x, int y), в котором фигура будет отрисовывать себя сама в нужной точке и т.п.
101-s, в комментариях выяснилось, что в таблице - не состояние счета, а транзакции. Так что не *, а user_id, SUM(value) as total, скажем. И в WHERE должно быть value, money - это имя таблицы.
Вы неправильно начали. Начните с понимания того, что код, в котором есть список figure_list, не знает и не должен знать, какой фигурой является каждый элемент списка. Его зона ответственности - хранить все эти объекты и перебирать их в цикле. Дальше, если должна быть какая-то разница - она должна проявляться внутри самих классов и не торчать наружу.
я не собираюсь говорить имя, и не хочу говорить фамилию, макрос работает просто как замена в коде указанного имени указанной конструкцией.
Вы же хотите от компилятора, чтобы он делал вложенные замены. Так не бывает.
Имхо, единственная функция, которую все эти макросы выполняют в приведенном коде, состоит в том, что они запутывают автора, создавая иллюзию того, что код работает так, как он задумал.
Экие грубияны и бездельники!