我看到一个看起来像这样的函数定义
ClassName::Read(myObjectClass &temp)
我试图这样称呼它:
myObjectClass *myObj;
ClassName::Read(&myObj);
但这是不正确的。调用它的正确方法是什么?它必须是
myObjectClass&
类型 最佳答案
正如James正确指出的那样,正确的语法是*myObj
。关键是&myObj
为您提供了myObj
的地址,该地址具有myObjectClass**
的类型。相反,您想取消引用myObj
以获得它指向的myObjectClass
实例,因此您使用*
。
顺便说一句,目前,使用*myObj
会导致不确定的行为,因为myObj
本身尚未初始化。如果您不需要动态分配myObjectClass
,则最好这样做:
myObjectClass myObj;
ClassName::Read(myObj);
如果必须进行动态分配,则可以执行例如
myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;