我有一个功能:
void func(Obj* obj){
...
}
为方便起见,我有时更喜欢称之为
func(&MyObj(param1, param2));
当然,这不会起作用,因为对象将是一个右值。但是我怎么能实现我的目标呢?
答案 0 :(得分:1)
您必须这样做:
Obj p(param1, param2);
func(&p);
或者,如果和仅当 func
管理其参数的生命周期(否则,这是内存泄漏),您可以这样做:
func(new Obj(param1, param2));
或重写func()
以取Obj
代替Obj*
。
答案 1 :(得分:0)
尝试
Obj myobject(param1, param2);
func(&myobject);
这将在堆栈上创建对象并将指针传递给函数func