Visual c++ 为什么在c+;中返回结构时出现多个错误+;?
我在返回结构时遇到问题 我创建了一个函数currentPeriodCharges,它将执行一些计算并返回结果,以便在另一个函数中使用 其中一个错误包括:无法重载仅由返回类型区分的函数 有什么想法吗 以下是结构: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
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的类/结构/联合类型必须为“未知类型”