我看到一个看起来像这样的函数定义
ClassName::Read(myObjectClass &temp)
我试图这样称呼它:
myObjectClass *myObj;
ClassName::Read(&myObj);
但这是不正确的。调用它的正确方法是什么?它必须是类型myObjectClass&
像这样:
ClassName::Read(*myObj);
正如詹姆斯正确指出的那样,正确的语法是*myObj
. 关键是它&myObj
为您提供了 的地址myObj
,它的类型为myObjectClass**
。相反,您希望取消引用 myObj
以获取myObjectClass
它指向的实例,因此您使用*
.
顺便说一句,就目前而言, using*myObj
会导致未定义的行为,因为myObj
它本身尚未初始化。如果您不需要动态分配 a myObjectClass
,则最好这样做:
myObjectClass myObj;
ClassName::Read(myObj);
如果动态分配是必须的,那么你可以做例如
myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;
这边走
myObjectClass myObj;
ClassName::Read(myObj);
您不必到处使用指针和动态分配。C++ 不是 Java。