3

我是 Qt(和一般的 C++)的新手,所以我在指针方面很弱。我需要转换Object&Object*Object某个类的对象在哪里)

我该怎么做?

任何帮助,将不胜感激。

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 回答