の作業が、私の参照が失われた機能パスがメニューの状態を変更する機能を実装しようとして
void gotoLowerlevel(Menu *item)
{
if (item->chld != 0x00){
item = item->chld;
}
}
に入っているときに、関数の呼び出しは currentStateのはへのポインタである。この方法で行われていません構造体メニュー
なぜこれが機能しないのかわかりません。何か案は..??
の作業が、私の参照が失われた機能パスがメニューの状態を変更する機能を実装しようとして
void gotoLowerlevel(Menu *item)
{
if (item->chld != 0x00){
item = item->chld;
}
}
に入っているときに、関数の呼び出しは currentStateのはへのポインタである。この方法で行われていません構造体メニュー
なぜこれが機能しないのかわかりません。何か案は..??
は、他の場所のオブジェクトへの参照であってもローカル変数です。 cnsle->currentState
を参考にcnsle
&cnsle->currentState
にMenu ** itemptr
にメソッドシグネチャと呼び出しパラメータを変更する場合)cnsle->currentState
を変更するにはgotoLowerLevel
から、それを割り当てる:cnsle->currentState = gotoLowerLevel(cnsle->currentState)
呼び出しコードを読むとき、これは、それは明らかにして私の好みは、最後のオプションになりますは変更されることがあります。
他にも参照を渡す方法が説明されています。私の推奨ソリューションコードは
Menu* gotoLowerlevel(Menu *item)
{
if (item->chld != 0x00) {
item = item->chld;
}
return item;
}
/* .... */
cnsle->currentState = gotoLowerlevel(cnsle->currentState);
ポインタを値渡ししています。
ポインタが指しているオブジェクトに対する操作は外側から見えますが、ポインタ自体はコピーのみです。
ポインタへのポインタを使用すると便利です。
NULLをチェックすることもできます –