Официальный сайт студ.городка НГТУ
Программирование и БД » [C++] параметры по умолчанию 

#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

#2  21.05.12 20:59

Re: [C++] параметры по умолчанию

только если писать на C++0x
там есть фича "extending sizeof"

Offline

#3  22.05.12 10:54

$up
Профиль

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

Программирование и БД » [C++] параметры по умолчанию 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.019 сек.
Выполнено 14 запросов.