-1

ダブルスは機能しないようです。intしか使えないの?
C++ 関数テンプレートを使用して、これを double に変更できると聞きました。しかし、どうすればいいのかわかりません。

 #include <iostream>                                                     // Necessary 
using namespace std;
#define mMaxOf2(max, min) ((max) > (min) ? (max) : (min))
#define mMaxOf3(Min, Mid, Max)\
{\
     mMaxOf2(mMaxOf2((Min), (Mid)),(Max))\
}
inline long double fMaxOf2(long double min, long double max)
{
    return max > min ? max : min;
}

inline long double fMaxOf3(long double Min, long double Mid, long double Max)
{
      return fMaxOf2(Min, fMaxOf2( Mid, Max));
    //fMaxOf2(Min, fMaxOf2( Mid, Max));     caused nan   problem      
}

int main()
{
    double primary;
    double secondary;
    double tertiary;

    cout << "Please enter three numbers: ";
    cin >> primary >> secondary >> tertiary;
    cout << "The maximum of " << primary << " " << secondary << " " << tertiary;

    long double maximum = mMaxOf3(primary, secondary, tertiary);
    cout << " using mMaxOf3 is " << maximum;

    cout << "\nThe maximum of " << primary << " " << secondary << " " << tertiary;
    long double maxim = fMaxOf3(primary, secondary, tertiary);
    cout << " using fMaxOf3 is " << maxim;

    return 0;
}

だから問題は

    inline long double fMaxOf2(long double min, long double max)
    {
        return max > min ? max : min;
    }

    inline long double fMaxOf3(long double Min, long double Mid, long double Max)
    {
        fMaxOf2(Min, fMaxOf2( Mid, Max));    // This was wrong
        // It was fMaxOf2 (fMaxOf2(Min, Mid, Max);
    }

とにかく今、私は新しいエラーを受け取ります...マキシムはナンだと言います...それを解決しました。みんな、ありがとう!

4

3 に答える 3

3

テンプレートの使用:

template<class T>
inline T fMaxOf2(T min, T max)
{
    return max > min ? max : min;
}

template<class T>
inline T fMaxOf3(T Min, T Mid, T Max)
{
    fMaxOf2(Min, fMaxOf2(Mid, Max));
}

関数を使用するには:

double max = fMaxOf3<double>(0.231, 123.21312, 904.4);

それはなぜですか?テンプレートは、テンプレート引数を受け入れます。Tintemplate<class T>は、2 つの関数の引数です。T関数で「通常の」型またはクラスとして使用できるようになりました。

于 2012-10-22T06:08:43.467 に答える
1

これはインラインの問題ではありません。関数の型宣言がありません。そのはず :

inline double fMaxOf2(double min, double max)
{
    return max > min ? max : min;
}

inline double fMaxOf3(double Min, double Mid,double Max)
{
    fMaxOf2(Min, fMaxOf2(Mid, Max));
}
于 2012-10-22T06:13:06.977 に答える
0

fMaxOf2 は 2 つの引数しかとらないため、fMaxOf3 の Ur コードは間違っています。

template <class T>
    inline T fMaxOf2(T min, T max)
    {
        return max > min ? max : min;
    }

    template <class T>
    inline T fMaxOf3(T Min, T Mid,T Max)
    {
        fMaxOf2(Min,fMaxOf2(Mid, Max));
    }
于 2012-10-22T06:10:33.320 に答える