Просто интересно, как использовать (передать или вернуть) указатель на текущий объект в c ++?

В моем случае у меня есть карта узлов, и я хочу назначить узел дочерним и при этом добавить текущий узел в качестве родительского для дочернего

Ниже то, что у меня есть прямо сейчас

void node::assign_child(node* child)
{
   children.push_back(child);
   child->parents.push_back(*this???);
}
1
Josh the wizard 8 Июн 2021 в 05:40

2 ответа

Лучший ответ

Очень близко, но this сам по себе является указателем. Вы не хотите разыменовать this, иначе вы просто получите значение.

child->parents.push_back(this);
1
Silvio Mayolo 8 Июн 2021 в 02:41

Ну, this сам по себе является указателем. Даже его называют «этим указателем».

О том, почему это указатель, Эта публикация SO может быть полезно.

Если вы действительно хотите вникнуть в это, используйте §12.2.2.1 Указатель this стандарта C ++ 17:

ключевое слово this - это выражение prvalue, значение которого - адрес объекта, для которого вызывается функция. Тип this в функции-члене класса X равно X*.

2
Uduru 8 Июн 2021 в 02:52