定义一个Rational 类,然后写一个返回值为Rational的非成员函数,编译器报错:无法重载仅按返回类型区分的函数
Rational adder_substractor(string str);
Rational adder_substractor(string str)
{
int num = str.length();
//提取运算符
char *operators = new char[num];
int operatorNum = 0;//运算符个数
for (int i = 0; i < num; i++)
{
if (str[i] == '+' || str[i] == '-')
{
operators[operatorNum] = str[i];
operatorNum++;
}
}
//提取字符串中的数字
int numberNum = (operatorNum + 1) * 2;//分子和分母个数的总和
int *number = new int[numberNum];
for (int i = 0; i < numberNum; i++)
number[i] = 0;
int j = 0;
for (int i = 0; i < num; i++)
{
if (str[i] >= '0'&&str[i] <= '9')
{
number[j] *= 10;
number[j] = number[j] + str[i] - '0';
}
else if (str[i] == '-' || str[i] == '+' || str[i] == '/')
j++;
}
//创建Rational对象
Rational *rationals = new Rational[numberNum / 2];
int rationalNum = 0;
for (int i = 0; i < numberNum; i += 2)
{
rationals[rationalNum] = Rational(number[i], number[i + 1]);
rationalNum++;
}
//执行运算
for (int i = 0; i < operatorNum; i++)
{
if (operators[i] == '+')
{
rationals[i + 1] = rationals[i] + rationals[i + 1];
}
else if (operators[i] == '-')
{
rationals[i + 1] = rationals[i] - rationals[i + 1];
}
}
return rationals[rationalNum - 1];
}