我看到一个函数的定义,看起来像这样C++的引用,地址指针
ClassName::Read(myObjectClass &temp)
我想这样称呼它:
myObjectClass *myObj;
ClassName::Read(&myObj);
但是这是不正确。叫它的正确方法是什么?它需要类型myObjectClass&
我看到一个函数的定义,看起来像这样C++的引用,地址指针
ClassName::Read(myObjectClass &temp)
我想这样称呼它:
myObjectClass *myObj;
ClassName::Read(&myObj);
但是这是不正确。叫它的正确方法是什么?它需要类型myObjectClass&
正如詹姆斯正确地指出,正确的语法是*myObj
。关键是&myObj
给你的地址myObj
,它有一个myObjectClass**
类型。您需要改为取消引用myObj
以获得它指向的myObjectClass
的实例,因此您使用*
。
顺便提一句,目前使用*myObj
会导致未定义的行为,因为myObj
本身尚未初始化。如果您不需要动态分配myObjectClass
,你可能会更好只是这样做:
myObjectClass myObj;
ClassName::Read(myObj);
如果动态分配是必须的,那么你可以做如
myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;
像这样:
ClassName::Read(*myObj);
这样
myObjectClass myObj;
ClassName::Read(myObj);
您不必使用指针和动态分配无处不在。 C++不是Java。
请注意,如果对象'myObj'未在调用函数(例如new myObjectClass)中创建,则该Read将写入某个未定义的地址。 – guga 2012-04-10 00:56:26