2012-06-15 66 views
2

我是Qt(和一般的C++)的新手,所以我在指針方面很弱。我需要將Object&轉換爲Object*(其中Object是某個類的對象)Qt和C++如何轉換Obj&Obj *

我該怎麼做?

任何幫助,將不勝感激。

+0

在哪種情況下?在函數調用? –

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

謝謝,那幫了!我從一段時間以來就遇到了錯誤,但現在已經解決了。 –

1

您使用地址的操作,就像一個普通的對象。

SomeObject o; 

SomeObject &ref = o; 

SomeObject *ptr = &ref; 
+0

是的,和我們所說的一樣(儘管可能是你之前發佈的:D)。 –