Еще один вариант двойного указателя

Как я могу отправить указатель на функцию со ссылкой? Я имею в виду, я хотел бы изменить положение указателя в этой функции.

Я видел для этого двойной указатель, например:

Abc* p;
function(&p);

function(Abc** p){
(*p) = 0;
}

Но мне сказали, что это не лучший способ приблизиться к этому. Как может быть лучше? Будет ли это работать? :

Abc* p;
function(p);

function(Abc* p){
p = 0;
}

Спасибо

0

Решение

Нет, это не сработает. Это скопирует значение p в функцию, а затем только изменить эту копию.

Наиболее подходящий способ передачи чего-либо по ссылке в C ++ — это использование ссылочного типа. Они обозначены амперсандом в шрифте. Вы можете взять ссылку на указатель:

Abc* p;
function(p);

void function(Abc*& p){
p = 0;
}

Это означает, что, даже если вы прошли p напрямую, это не скопировал в функцию. p аргумент ссылка к объекту, переданному в.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector