Проблема передачи узлов связанного списка по значению заключается в том, что они копируются.Вы можете установить указатель так, чтобы он указывал на значение bid
в вашей функции, но это почти наверняка не то, что вы хотите, потому что он исчезнет в конце функции, оставляя указатель свисающим.Узлы связанного списка практически всегда выделяются в куче и передаются по указателю, поскольку вы можете вручную управлять временем жизни объектов, выделенных в куче (что важно здесь).
Теперь, что делает это немного проблематичным източка зрения ОО состоит в том, что ваш класс Bid
нарушает принцип единой ответственности (SRP), поскольку он одновременно является хранилищем конкретной информации о ставке и участника связывания определенных заявок вместе.Это одна из причин, по которой вы редко видите навязчивые контейнеры на ОО-языках.В зависимости от вашего конкретного случая использования, может быть предпочтительнее хранить Bid
без указателя в BidNode
, который будет выполнять связывание.Если бы вы сделали это, вы могли бы передать значение Bid
по значению и скопировать его в выделенную кучу BidNode
.Или, конечно, вы можете просто использовать std::list
.