2

我看到一个看起来像这样的函数定义

ClassName::Read(myObjectClass &temp)

我试图这样称呼它:

myObjectClass *myObj;
ClassName::Read(&myObj);

但这是不正确的。调用它的正确方法是什么?它必须是类型myObjectClass&

4

3 回答 3

9

像这样:

ClassName::Read(*myObj);
于 2012-04-10T00:50:11.317 回答
5

正如詹姆斯正确指出的那样,正确的语法是*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;
于 2012-04-10T00:52:41.457 回答
0

这边走

myObjectClass myObj;
ClassName::Read(myObj);

您不必到处使用指针和动态分配。C++ 不是 Java。

于 2013-06-12T21:36:27.487 回答