「この」キーワードに関する質問があります。私は二変量多項式を表す "BiPoly"というクラスを持っています。 BiPoly<NT>::DifferentiateX()
というメンバ関数があり、これは部分微分wrt Xを取得し、自己修正します。 BiPolyと呼ばれる別のメンバ関数でC++で "this"を使用して、メンバ関数でローカルオブジェクトを作成することはできますか?
template <class NT>
BiPoly<NT> & BiPoly<NT>::differentiateX() {
if (ydeg >= 0)
for (int i=0; i<=ydeg; i++)
coeffX[i].differentiate();
return *this;
}//partial differentiation wrt X
:: EVAL1は()、私はBiPoly<NT>::eval1()
を呼び出して、オブジェクトのDifferentiateX()
の結果を取得する必要があります。 DifferentiateX()は自己修正されているので、eval1()内で結果を得るために一時変数を作成する必要があります。私の質問は:"this"
を使用してメンバー関数内で一時オブジェクトを作成できますか?もしそうなら、どうしたらいいですか?
彼の 'differentiateX'関数の定義は全く問題ありません。これは、一時オブジェクトへの参照を返すわけではありませんが、 '* this' - メソッドが呼び出されたオブジェクトです。もちろん、 'BiPoly return 'のようなものを実行するために使うことができますが、メソッド自体を呼び出すのではなく、そのようなメソッドを呼び出すコードでは問題になります。 – Xion
Xionに:ええ、ちょうど彼の質問が「私はこれを使ってメンバー関数内の一時オブジェクトを作成できますか」ということに気付きました。それで、答えは何とかしても有効です: 'BiPoly nv = * this;'は、このオブジェクトを使った初期化でこのような一時変数を宣言する方法です。 –