Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

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

10.09.2011, 21:33. Просмотров 759. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задать аргументу значение по умолчанию (C++):

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

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

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

Значение по умолчанию - C++
В C++ можно устанавливать встроенным типам данных значения по умолчанию вот таким способом: int i = int(); Здесь в переменной i будет...

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

Значение по умолчанию передаваемое в функцию - C++
Значение по умолчанию передаваемое в функцию для переменных допустим int-типа установить можно вот так some_func(int i = 0){ Но вот как...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Значение по-умолчанию для ссылки - C++
Здравствуйте, есть такой код: void iterateTheElements(someClass &parent = someClass ()); Под MVSC все нормально работает, MinGW же на...

Ошибка: отсутствует значение, используемое по умолчанию - C++
В общем задание нужно сделать через функцию вроде написал но всё время пишет вот такую ошибку error C2548: find_min_colums: отсутствует...

Принимает ли первый член неинициализированного массива какое-то значение по умолчанию? - C++
Доброго времени суток! Задался я одним вопросом. есть такой код #include<iostream> using namespace std; int main() { void...


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

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

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