このような関数定義が表示されます
ClassName::Read(myObjectClass &temp)
私はそれをこのように呼ぼうとしています:
myObjectClass *myObj;
ClassName::Read(&myObj);
しかし、それは正しくありません。それを呼び出す適切な方法は何ですか?タイプである必要がありますmyObjectClass&
このような:
ClassName::Read(*myObj);
James が正しく指摘しているように、正しい構文は*myObj
. ポイントは、タイプが&myObj
の のアドレスが得られることです。代わりに逆参照して、それが指すインスタンスを取得する必要があるため、 を使用します。myObj
myObjectClass**
myObj
myObjectClass
*
ちなみに、現時点では、それ自体が初期化されていない*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 ではありません。