よく参照される変数があります。それは自動変数として始まりました。
ここで、コードの途中でdtorを呼び出して状態をリセットすることにしたので、割り当てを解除して再割り当てするつもりです。もちろん、これを行う標準的な方法は、deleteを呼び出して、新しいものを作成することです。
前:
void func() {
ClassName varname;
while (varname.check()/*...*/) { if (varname.function()/*...*/) { /* bunches of code ... */
/*... some more code ... */
}
}
}
今私が欲しい:
void func() {
ClassName varname;
while (varname.check()/*...*/) { if (varname.function()/*...*/) { /* bunches of code ... */
if (key_code[SDLK_r]) { // Pressing R key should reset "varname"!
/* Here I want to dealloc and realloc varname! */
/* But if I declare varname as a ptr on line 2, */
/* line 3 (rest of code) must be refactored. */
}
}
}
}
私の最初の試みは、2行目をこのようなものに変更することです
ClassName *varnamep = new ClassName();
ClassName& varname = *varnamep;
しかし、それが後で削除を呼び出して参照を再割り当てできるかどうかはわかりません。
delete &varname;
varnamep = new ClassName();
varname = *varnamep; // I assume compiler will error here because I can't reassign a ref.
これを他の方法で行うことはできますか?それとも私はそれを吸い上げて、に変わるための検索交換を行うべきvarname.
ですvarname->
か?私の実際の実際の状況のこの特定のケースでは、おそらくメンバー関数を実装し、reset()
この実際の問題について心配する必要はありません。しかし、参照をポインタとして効果的に処理できるようにするためのショートカットがあるかどうかを知りたいです(または、これはばかげたナンセンスであることが判明する可能性があります)