Qt和C ++如何转换Obj&到Obj *

时间:2012-06-15 06:44:14

标签: c++ qt pointers

我是Qt(和一般的C ++)的新手,所以我对指针很缺乏。我需要将Object&转换为Object*(其中Object是某个类的对象)

我该怎么做?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:5)

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);

答案 1 :(得分:1)

您使用address-of运算符,就像普通对象一样。

SomeObject o;

SomeObject &ref = o;

SomeObject *ptr = &ref;