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

Instantiate class within parameter list when pointer is required

本文关键字:列表 参数 实例化 指针      更新时间:2023-10-16

我有一个函数:

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

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

func(&MyObj(param1, param2));

当然不行,因为对象是右值。但是我怎样才能达到我想要做的呢?

你必须这样做:

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

或者,如果和仅当 func管理其参数的生命周期(否则,这是内存泄漏),您可以这样做:

func(new Obj(param1, param2));

或者将func()改写为Obj而不是Obj*

Try

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

将在堆栈上创建对象,并将指向该对象的指针传递给函数func