私はこのC++の参照、アドレス、ポインタ
ClassName::Read(myObjectClass &temp)
のように見える関数定義を参照してください私はこのようにそれを呼び出すようにしようとしている:
myObjectClass *myObj;
ClassName::Read(&myObj);
が、それは間違っています。それを呼び出す正しい方法は何ですか?
ClassName::Read(*myObj);
私はこのC++の参照、アドレス、ポインタ
ClassName::Read(myObjectClass &temp)
のように見える関数定義を参照してください私はこのようにそれを呼び出すようにしようとしている:
myObjectClass *myObj;
ClassName::Read(&myObj);
が、それは間違っています。それを呼び出す正しい方法は何ですか?
ClassName::Read(*myObj);
ジェームズが正しく指摘するように、正しい構文は*myObj
である:それはこのようなタイプのmyObjectClass&
する必要があります。要するに、&myObj
はmyObj
のアドレスを与えます。タイプはmyObjectClass**
です。その代わりに逆参照myObj
を入力して、myObjectClass
のインスタンスを取得したいので、*
を使用します。
ちなみに、現時点では、*myObj
を使用すると、myObj
自体が初期化されていないため、未定義の動作が発生します。動的な割り当てが必須である場合は、あなたが行うことができ、例えば
myObjectClass myObj;
ClassName::Read(myObj);
:あなたは動的myObjectClass
を割り当てる必要がない場合は、単にこれをやったほうが良いかもしれません
myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;
この方法
myObjectClass myObj;
ClassName::Read(myObj);
あなたはどこにでもポインタと動的割り当てを使用する必要はありません。 C++はJavaではありません。
オブジェクト 'myObj'が呼び出し元の関数(new myObjectClassなど)で作成されていない場合、読み取りは未定義のアドレスに書き込むことに注意してください。 – guga