これが私が取り組んでいるものです。
{
int Test;
void (*functions[5])() = {
return,
one,
two,
three,
four
};
for (Test = takeInput(5);; Test = takeInput(5)){
cls();
Print(L"0) Abort\n");
Print(L"1) One\n");
Print(L"2) Two\n");
Print(L"3) Three\n");
Print(L"4) Four\n");
Print(L"Enter Selection: ");
(*functions[Test])();
}
}
それが私がやろうとしていることの要点です。これは、あるコンテキストのメニューシステムのようなものです(そしてtakeInput(5)は入力を一時停止し、誰かが数値を入力するまでループを停止します)。
問題は、そのようにreturnを使用することは明らかに間違っているということです。(私が思った)returnが関数であると見て、メニューから抜け出すために関数ポインター配列に入れることができない理由がわかりません。基本的に呼び出されたときにtrueを返すダミー関数を作成し、それをチェックできると思います(他のすべての関数がvoidを返すという問題があります)。それがうまくいったとしても、私はむしろ、上記の機能しない例のように自己完結型の解決策を持っていると思います。
私がこれまで考えていたものよりも優れた、きれいで、うまくいけば短い方法でこれを行う方法はありますか?