#oop #c 11
Вопрос:
Я решаю проблему и наткнулся на это препятствие . Почему этот код выдает мне ошибку
queue<node>q;
node n;
q.push(n);
q.push(NULL);
«нет соответствующей функции для вызова» std::очередь::push(NULL)»
И когда я сделаю это, изменится
queue<node*>q;
node* n = new node();
q.push(n);
q.push(NULL);
Это Прекрасно работает!
Комментарии:
1. Ваша очередь содержит
node
s, но вы пытаетесь нажатьNULL
, которое не является одним из них.2. Вы могли бы использовать
q.push({})
то, что может работать как сstd::queue<node>
, так и сstd::queue<node *>
. В первом случае он будет толкать созданный по умолчаниюnode
указатель, во втором случае он будет толкать созданный по умолчанию указатель на anode
, что будет то же самое , что и нажатиеnulltpr
(не используйтеNULL
, это вещь C).3. Ваш
node
не инициализируется нулем , вы получите ту же ошибку дляnode n = NULL;