C++从函数返回double或int

011*_*110 0 c++

我有一个函数,它采用完全相同的args,但有时我希望它返回一个double,其他时候我想它返回一个int.这样做的正确方法是什么?

我可以执行函数重载,但重载函数的声明必须通过参数列表中的参数类型和/或数量彼此不同.这些是相同的,所以函数重载不适用(我不认为).

double calc( int value, int add, double mult )
{
     // Sometimes I want this to return int. Sometimes double.
     return (value + add) * mult;
}
Run Code Online (Sandbox Code Playgroud)

当我想要的类型或写两个函数时,我宁愿不转换为int(一个用于int,另一个用于双精度).谢谢你的建议.

Ada*_*iss 5

您可以创建第二个功能:

int calcInt(int value, int add, double mult) {
  return calc(value, add, mult);
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用模板:

template <class myType>
myType calc(int value, int add, myType mult) {
  return (value + add) * mult;
}
Run Code Online (Sandbox Code Playgroud)

您不能使用相同的名称和参数创建不同的函数; 编译器不知道你想调用哪一个.


Ant*_*eru 5

template <typename T, typename U>
T calc (const int value, const int add, const U mult)
{
    return static_cast<T> ((value + add) * mult);
}

calc<double> (1, 2, 1.7); // returns double
calc<int> (1, 2, 3.4); // returns int
Run Code Online (Sandbox Code Playgroud)