#1 21.05.12 11:56
[C++] параметры по умолчанию
есть класс. в нем функция f1. и приватное поле в виде некоторой структуры с перегруженным оператором присваивания, например с типом pole и именем pole1.
хочу делать так:
void classname::f1(const pole& p1, const pole& p2, const pole& p3 = pole1)
{
//бла бла
}
но так нельзя. говорит надо чтобы pole1 было статическим. но мне не надо чтобы оно было статическим. как можно решить проблему?
две функции такого вида не хочу:
void classname::f1(const pole& p1, const pole& p2)
{
f1(p1, p2, pole1);
}
void class::name f1(const pole& p1, const pole& p2, const pole& p3)
{
//бла бла
}
ибо у меня таких пар в классе много.
можно как нить выйти из ситуации?
Исправлено Flinn (21.05.12 11:57)
Offline
#3 22.05.12 10:54
Re: [C++] параметры по умолчанию
Можно не создавать отдельную функцию, а просто проверять на ноль последний аргумент и брать его равным pole1. (переделать параметры на указатели)
void classname::f1(pole const* p1, pole const* p2, pole const* p3 = NULL)
{
if (p3 == NULL)
{
p3 = &pole1;
}
}
Исправлено $up (22.05.12 12:49)
Offline

