Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Gepar
1181 / 537 / 77
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Задать аргументу значение по умолчанию

10.09.2011, 21:33. Просмотров 824. Ответов 1
Метки нет (Все метки)

Идея такова: есть у меня однонаправленный линейный список и конструктор для инициализации его значений:
C++
1
2
3
4
5
6
7
8
9
10
11
        ListItem(string &f,int y, int a, string &g)
        {
            //различные данные узла списка
            setFullname(f);
            setYear(y);
            setAverage(a);
            setGroup(g);
 
            //указатель на сл. элемент
            Next=NULL;
        }
При некоторых операциях со списком мне было бы удобно чтобы при создании нового элемента списка (типа ListItem) я мог передать заодно как параметр и адрес сл. элемента в списке(Next), т.е хотелось бы вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
        ListItem(string &f,int y, int a, string &g,ListItem &NextPtr=0 )
        {
            //различные данные узла списка
            setFullname(f);
            setYear(y);
            setAverage(a);
            setGroup(g);
 
            //указатель на сл. элемент
            Next=NextPtr;
        }
Но компилятор говорит что мол нельзя значениям получаемым по ссылке задавать стандартные значения и какая-то доля правды в этом есть ... тем не менее хотелось бы мне это реализовать (ну вот хочется и всё тут), есть у кого идеи или может кто сталкивался с таким? Делать вызовы всюду указывая последним аргументом NULL там где нет адреса для сл. элемента в списке ,при этом в моём конструкторе никак не инициализировать по умолчанию NextPtr, - не вариант, читабельность кода сильно пострадает (да и быдлокодом будет попахивает ). Хочу услышать ваши идеи

Добавлено через 29 минут
Идея не обязательно состоит в том как заставить компилятор сьесть такой код, идея в передаче не обязательным аргументом адреса сл. указателю, который должен быть равным 0 если он не передаётся ... хотя тут наверное так не получиться сделать как мне кажется. Но мало ли, может у кого есть безумная идея.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2011, 21:33
Ответы с готовыми решениями:

Как задать каждому элементу массива значение по умолчанию?
Например я знаю что void max(int t=9){//значение по умолчанию переменой t++;...

функция возвращающая аргументу его значение сама по себе
Глупость, но не иначе не могу объяснить это явление. гуляя по сайтам...

Как в CEdit задать текст по умолчанию?
Как в CEdit задать текст по умолчанию?

Значение по умолчанию
В C++ можно устанавливать встроенным типам данных значения по умолчанию вот...

Значение вектора по-умолчанию
Здравствуйте! В общем проблема уже в заголовке. Нужно,чтобы в функции с 3...

1
Nick Alte
Эксперт С++
1647 / 1019 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.09.2011, 22:09 #2
В данном случае надо пользоваться не ссылками (&), а указателями (*). Во всяком случае, Next должен быть именно указателем. Если же есть желание передавать следующий элемент именно по ссылке (тогда в конструкторе придётся писать
C++
1
Next = &NextPtr;
), то проще всего воспользоваться перегрузкой: использовать оба конструктора, приведённых в тексте и не задавать NextPtr значения по умолчанию. Тогда если не указывать следующий элемент, вызовется первый конструктор, а если указывать - второй.
Тем не менее, проще всего воспользоваться вариантом с указателем и единственным конструктором:
C++
1
2
3
4
5
6
7
8
9
10
11
 ListItem::ListItem(string &f,int y, int a, string &g, ListItem* NextPtr=NULL)
                {
                        //различные данные узла списка
                        setFullname(f);
                        setYear(y);
                        setAverage(a);
                        setGroup(g);
 
                        //указатель на сл. элемент
                        Next=NextPtr;
                }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2011, 22:09

Значение по-умолчанию для ссылки
Здравствуйте, есть такой код: void iterateTheElements(someClass &parent =...

Перегрузка функций. Значение по умолчанию
Добрый вечер. Прощу помочь разобраться с вопросом. Проблема в следующем. Есть...

Значение по умолчанию передаваемое в функцию
Значение по умолчанию передаваемое в функцию для переменных допустим int-типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru