需要指针时,在参数列表中实例化类

时间:2015-06-05 18:01:55

标签: c++

我有一个功能:

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

为方便起见,我有时更喜欢称之为

func(&MyObj(param1, param2));

当然,这不会起作用,因为对象将是一个右值。但是我怎么能实现我的目标呢?

2 个答案:

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