template 関数入門

引数の型が違うだけなら template(テンプレート)関数がお勧めです。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. 今二個の int 型引数をパラメータにして、大きい方の値をリターンする関数 Max を定義します。
    int  Max(int n1, int n2)
    {
        if (n1>n2)  return n1;
        return n2;
    }
    
    この関数を float 型で使うには、本体は同じで型だけが異なる次のような関数が必要です。
    float  Max(float n1, float n2)
    {
        if (n1>n2)  return n1;
        return n2;
    }
    
    このようなとき、型の問題を一挙に解決してくれるのが template 関数です。
  2. template 関数を使うと関数の型を呼び出し側の型に合わせてくれます。
    <class Type> で呼び出し側から渡された型を Type で受け取ります。
    template<class Type>
    Type  Max(Type n1, Type n2)
    {
        if (n1>n2)  return n1;
        return n2;
    }
    
  3. 呼び出し側は次のようになります。
    int 型と float 型で同じ関数を呼び出してみました。
        int     d1,d2;
        d1= 3;
        d2= 7;
        printf("d1=%d, d2=%d   MAX=%d\n",d1,d2,Max(d1,d2));
    
        float   f1,f2;
        f1= 12.3f;
        f2= 234.5f;
        printf("f1=%f, f2=%f   MAX=%f\n",f1,f2,Max(f1,f2));
    

超初心者のプログラム入門(C/C++)