Я сделал это оба пути - Вы получаете намного лучшие результаты с Возможностью 2.
Любой простой алгоритм Вы создаете для Возможности 1, будет, вероятно, работать хорошо только на ограниченный диапазон стартовой насыщенности.
Вы хотели бы изучить Возможный 1, если (1) можно ограничить цвета и используемые яркости и (2) Вы выполняете вычисление много в рендеринге.
для Генерации фона для UI не будут нужны очень много вычислений штриховки, таким образом, я предложу Возможные 2.
- Al.
.h:
class Foo {
int x, y;
Foo(int a, int b=0);
};
.cc:
#include "foo.h"
Foo::Foo(int a,int b)
: x(a), y(b) { }
Вы только добавляете значения по умолчанию в объявление, но не в реализацию.
Заголовочный файл должен иметь параметры по умолчанию, cpp не должен.
test.h:
class Test
{
public:
Test(int a, int b = 0);
int m_a, m_b;
}
test.cpp:
Test::Test(int a, int b)
: m_a(a), m_b(b)
{
}
main.cpp:
#include "test.h"
int main(int argc, char**argv)
{
Test t1(3, 0);
Test t2(3);
//....t1 and t2 are the same....
return 0;
}
Параметр по умолчанию должен быть записан в файл заголовка.
Foo(int a, int b = 0);
В cpp при определении метода вы не можете указать параметр по умолчанию. Однако я сохраняю значение по умолчанию в закомментированном коде, чтобы его было легко запомнить.
Foo::Foo(int a, int b /* = 0 */)
Вам необходимо поместить аргументы по умолчанию в заголовок, а не в файл .cpp.