将类对象指针传递给初始化C++的函数

Sma*_*ash 1 c++ class pass-by-reference

让我说我有一个类"A"和这个功能:

void initializationFunction(A* classPointer)
{
    ...
    ...
    classPointer = new A(.....); 
}
Run Code Online (Sandbox Code Playgroud)

我写:

A* classPointer;
Run Code Online (Sandbox Code Playgroud)

然后我将此指针传递给此函数:

initializationFunction(classPointer);
Run Code Online (Sandbox Code Playgroud)

除非我在函数声明中通过引用传递它,否则这将不起作用:

void initializationFunction(A*& classPointer);
Run Code Online (Sandbox Code Playgroud)

我认为引用传递是非指针类型变量.我的意思是你不需要通过引用传递数组...

谢谢你的解释:)

Naw*_*waz 5

是的,这是真的.你必须通过引用传递参数(或者你可以传递A**).

但最好的解决方案是以A这样的方式编写构造函数,以便您首先不需要此函数.也就是说,无论你在这个函数中做什么,你都应该在构造函数本身中这样做.

但是,如果您无法编辑该类,则可以执行以下操作:

A *initializationFunction()
{
    A *obj = new A(.....); 
    //...
    return obj;
}

A *classPointer = initializationFunction();
Run Code Online (Sandbox Code Playgroud)

在我看来,这种方法比你的方法更好.

注意我没有更改函数的名称和其他变量.我想这不是帖子的重点.但我相信你会想要真正的代码更好的名字.