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

James が正しく指摘しているように、正しい構文は*myObj. ポイントは、タイプが&myObjの のアドレスが得られることです。代わりに逆参照して、それが指すインスタンスを取得する必要があるため、 を使用します。myObjmyObjectClass** myObjmyObjectClass*

ちなみに、現時点では、それ自体が初期化されていない*myObjため、使用すると未定義の動作が発生します。myObja を動的に割り当てる必要がない場合は、次の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 に答える