さまざまなパラメーターと定義を使用して、C++ で関数をオーバーロードするプロセスを認識しています。ただし、パラメーターを除いて同一の2つの関数がある場合、この定義を1回だけ持つ方法があります。
私が使用した機能は、正しい入力 (つまり、文字ではなく数字が入力された) をチェックすることです。1 つは int 用で、もう 1 つは float 用です。これと、参照によって変数を渡すという事実のために、定義はまったく同じです。
2 つの関数宣言は次のとおりです。
void Input (float &Ref);
void Input (int &Ref);
そして、次の共通の定義を共有します。
Function_Header
{
static int FirstRun = 0; // declare first run as 0 (false)
if (FirstRun++) // increment first run after checking for true, this causes this to be missed on first run only.
{ //After first run it is required to clear any previous inputs leftover (i.e. if user entered "10V"
// previously then the "V" would need to be cleared.
std::cin.clear(); // clear the error flags
std::cin.ignore(INT_MAX, '\n'); // discard the row
}
while (!(std::cin >> Ref)) // collect input and check it is a valid input (i.e. a number)
{ // if incorrect entry clear the input and request re-entry, loop untill correct user entry.
std::cin.clear(); // clear the error flags
std::cin.ignore(INT_MAX, '\n'); // discard the row
std::cout << "Invalid input! Try again:\t\t\t\t\t";
}
}
同じコードの 2 つの同一のコピーを両方のパラメーター タイプに使用しながら、同じコードを 2 つ持つ必要があることを回避する方法があれば、プログラムのコードを大幅に短縮できます。この問題を抱えているのは私だけではないと確信していますが、検索結果はすべて、複数の定義を使用して関数をオーバーロードする方法の説明です。
ヘルプやアドバイスをいただければ幸いです。