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

时间:2013-11-26 04:58:40

标签: 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 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;
                    }
                }
        }
    }
};

2 个答案:

答案 0 :(得分:1)

第二个错误:

  

'mystruct':重新定义;使用typedef

不能重载符号

在这里更有意义。真正的问题必须在线之前 mystruct currentPeriodCharges (char a,int b,float c)

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

答案 1 :(得分:0)

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

我认为我们需要看到更多此代码。

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

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

其中parm float c位于函数标题中,int c=100;位于文本正文中