3

私は Qt (および一般的に C++) を初めて使用するので、ポインターがかなり苦手です。に変換する必要がObject&ありますObject*( whereObjectはあるクラスのオブジェクトです)

どうすればいいのですか?

どんな助けでも大歓迎です。

4

2 に答える 2

6
Obj ob;              <-------  Object named ob of the type Obj
Obj *ptr = &ob;      <-------  Oointer named ptr to type Obj pointing to ob    
Obj &ref = *ptr;     <-------- Reference named ref referring to object of type Obj  
Obj *ptr2 = &ref;    <-------- Pointer named ptr2 to object aliased by ref

参照をポインタに変換することはできません。参照をオブジェクト インスタンスへのエイリアス名として使用するだけです。したがって、元のオブジェクトであるかのように、参照されたオブジェクトのアドレスを取得するだけです。

したがって、ポインターを引数として受け取る関数があり、参照を渡す場合、使用法は実際のオブジェクトを使用する場合と似ています。

例えば:

void doSomething(Obj *ptr);

Obj ob;
Obj *ptr = &ob;              
Obj &ref = *ptr; 

doSomething(&ob);
doSomething(ptr);
doSomething(&ref);
于 2012-06-15T06:47:14.070 に答える
1

単純なオブジェクトの場合と同様に、address-of 演算子を使用します。

SomeObject o;

SomeObject &ref = o;

SomeObject *ptr = &ref;
于 2012-06-15T06:49:27.407 に答える