Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 08:58   #1
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию [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)
{
//бла бла
}
ибо у меня таких пар в классе много.

можно как нить выйти из ситуации?
Kukurudza вне форума Ответить с цитированием
Старый 21.05.2012, 12:53   #2
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Код:
void classname::f1(const pole& p1, const pole& p2, const pole& p3 = 0)
{
 if (p3 == 0) p3 = pole1;
 //бла бла
}
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 21.05.2012, 12:59   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2Kukurudza
Цитата:
но так нельзя. говорит надо чтобы pole1 было статическим. но мне не надо чтобы оно было статическим. как можно решить проблему?
логично, ему ведь нужен адрес объекта по умолчанию.

можно сделать так
Код:
void classname::f1(const pole& p1, const pole& p2, const pole *p3 = 0)
{
    if (!p3)
        p3 = &pole1;

    //бла бла
}
но перегрузка выглядит красивее, да и модифицировать код будет проще
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 21.05.2012 в 13:04.
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать программу через параметры-значений и параметры-ссылок bufalo C# (си шарп) 3 14.12.2011 17:10
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Юрий62 Помощь студентам 1 04.12.2011 14:09
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
параметры по умолчанию Dimarik PHP 2 20.07.2010 01:24
Параметры по умолчанию для нового документа Diego__ Microsoft Office Word 2 19.02.2010 20:45