10.09.2011, 21:33. Просмотров 804. Ответов 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 если он не передаётся ... хотя тут наверное так не получиться сделать как мне кажется. Но мало ли, может у кого есть безумная идея.