Visual c++ 为什么在c+;中返回结构时出现多个错误+;?

Visual c++ 为什么在c+;中返回结构时出现多个错误+;?,visual-c++,struct,overloading,Visual C++,Struct,Overloading,我在返回结构时遇到问题 我创建了一个函数currentPeriodCharges,它将执行一些计算并返回结果,以便在另一个函数中使用 其中一个错误包括:无法重载仅由返回类型区分的函数 有什么想法吗 以下是结构: typedef struct{ float cpCharges[3]; int cUsage[2]; }mystruct; 以下是函数: mystruct currentPeriodCharges (char a,int b,float c){ mystruct retVal; int

我在返回结构时遇到问题

我创建了一个函数currentPeriodCharges,它将执行一些计算并返回结果,以便在另一个函数中使用

其中一个错误包括:无法重载仅由返回类型区分的函数

有什么想法吗

以下是结构:

typedef struct{
float cpCharges[3];
int cUsage[2];
}mystruct;
以下是函数:

mystruct currentPeriodCharges (char a,int b,float c){
mystruct retVal;
int c=100;

if(a=='C'||a=='c'){
    retVal.cpCharges[2]=b*rate[1];
    retVal.cUsage[0]=0;
    retVal.cUsage[1]=0;
    retVal.cpCharges[0]=0;
    retVal.cpCharges[1]=0;
    return retVal;
}
    else{
        if(a=='R'||a=='r'){
            if(b<100){
                retVal.cpCharges[2]=b*rate[0];
                retVal.cUsage[0]=0;
                retVal.cUsage[1]=0;
                retVal.cpCharges[0]=0;
                retVal.cpCharges[1]=0;
                return retVal;
            }
                else{
                    if(b>100){
                        retVal.cUsage[0]=c;
                        retVal.cUsage[1]=b-retVal.cUsage[0];
                        retVal.cpCharges[0]=retVal.cUsage[0]*rate[0];
                        retVal.cpCharges[1]=retVal.cUsage[1]*rate[1];
                        return retVal;
                    }
                }
        }
    }
};
mystruct currentPeriodCharges(字符a、整数b、浮点c){
mystruct-retVal;
int c=100;
如果(a=='C'| | a=='C'){
回收费用[2]=b*费率[1];
retVal.cUsage[0]=0;
retVal.cUsage[1]=0;
retVal.cpCharges[0]=0;
retVal.cpCharges[1]=0;
返回返回;
}
否则{
if(a=='R'| | a=='R'){
如果(b100){
retVal.cUsage[0]=c;
retVal.cUsage[1]=b-retVal.cUsage[0];
回收cpCharges[0]=回收cUsage[0]*费率[0];
收回cpCharges[1]=收回cUsage[1]*费率[1];
返回返回;
}
}
}
}
};
第二个错误:


“我的结构”:重新定义;不能使用typedef重载符号

这一点更有意义。真正的问题一定就在这条线之前
mystruct currentPeriodCharges(字符a、整数b、浮点c)

在大多数情况下,它只是缺少分号,但它可能是该行之前的任何错误。

(我还没有足够的声誉发表评论,所以这是一个“答案”)

我认为我们需要更多地了解这些代码

我也很好奇为什么我们没有看到报告的错误

Error   1   error C2082: redefinition of formal parameter 'c'

其中parm
float c
位于函数头中,且
int c=100在正文中

是否有多个函数具有相同的名称和参数列表?否,函数currentPeriodCharges是唯一具有该名称和参数列表的函数。编译器是否指示发生此错误的位置?是的,函数currentPeriodCharges下有一条红色的曲线。它还提到了与函数中的数组有关的错误;'mystruct:重新定义;无法使用typedef重载符号,.cpCharges的类/结构/联合类型必须为“未知类型”