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