双打似乎无法奏效。我可以只使用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);
}
无论如何,现在我得到一个新的错误......说格言是纳... 解决了它。谢谢大家!
答案 0 :(得分: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);
现在你可能会问,为什么?模板接受模板参数。 T
中的template<class T>
是两个函数的参数。 T
现在可以在您的函数中用作“普通”类型或类。
答案 1 :(得分: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));
}
答案 2 :(得分:0)
fMaxOf3中的Ur代码错误,因为fMaxOf2只接受2个参数。
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));
}