0

参照付きの関数へのポインターを送信するにはどうすればよいですか? つまり、その関数でポインターが指している場所を変更したいと思います。

たとえば、次のようなダブルポインターを見てきました。

Abc* p;
function(&p);

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

しかし、これは最善の方法ではないと言われました。どうすればもっと良くなるでしょうか?これは機能しますか?:

Abc* p;
function(p);

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

ありがとう

4

1 に答える 1

3

いいえ、それはうまくいきません。これにより、 の値がp関数にコピーされ、そのコピーのみが変更されます。

C++ で何かを参照渡しする最も適切な方法は、参照型を使用することです。それらは、タイプにアンパサンドで示されます。ポインタへの参照を取ることができます:

Abc* p;
function(p);

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

pこれは、直接渡したとしても、関数にコピーされないことを意味します。p引数は、渡されたオブジェクトへの参照です。

于 2013-04-10T11:14:59.290 に答える