2015-06-05 60 views
0

我有一個函數:類實例化時,需要指針

void func(Obj* obj){ 
... 
} 

爲了方便起見,我有時喜歡這樣稱呼它

func(&MyObj(param1, param2)); 

這將當然不是工作因爲該對象將是一個右值。但是,我怎麼能實現我想要做的?

+1

'模板 T&左值(T && X){ 返回X; } func(&lvalue(MyObj(param1,param2));' – 0x499602D2

+0

@ 0x499602D2,你可以把它轉換成答案,有一點解釋嗎? –

回答

1

你不得不做的事:

Obj p(param1, param2); 
func(&p); 

或者,如果和只有func管理其參數(否則,這是一個內存泄漏)的壽命,你可以這樣做:

func(new Obj(param1, param2)); 

或重寫func()採取Obj而不是Obj*

0

嘗試

Obj myobject(param1, param2); 
func(&myobject); 

,將創建堆棧上的對象和指針傳遞給它的功能func

+1

也許'func'使用引用。 –