为什么错误:代码中出现“修复引用含糊不清”的原因?

时间:2014-04-27 12:46:26

标签: c++

此代码中的代码块显示错误:第52行中对fixed的引用不明确。 如何处理?

#include<iostream>
using namespace std;

class fixed
{
    int p;
    int y;
    float r;
    float ret;
    public:
    fixed(){}
    fixed(int pf,int yf,float rf=0.18);
    fixed(int pf,int yf,int rf);
    void display(void);
};
fixed::fixed(int pf,int yf,float rf)
{
    p=pf;
    y=yf;
    r=rf;
    ret=pf;
    for(int i=0;i<yf;y++)
    {
        ret=ret*(1.0+rf);
    }
}
fixed::fixed(int pf,int yf,int rf)
{
    p=pf;
    y=yf;
    r=rf;
    ret=pf;
    for(int i=0;i<yf;y++)
    {
        ret=ret*( 1.0 + float(rf)/100);
    }
}
void fixed::display(void)
{
    cout<<"Principal value : " <<p<<endl;
    cout<<"return value : " <<r<<endl;
}
int main()
{

    int pa;
    int ya;
    float ra;
    int R;
    cout<<"Enter principal , time(in years) , rate(in decimal)"<<endl;
    cin>>pa>>ya>>ra;
    fixed fd1(pa,ya,ra);//here in this line 52 error is shown

    cout<<"Enter principal , time(in years) , rate(in percent)"<<endl;
    cin>>pa>>ya>>R;
    fixed fd2(pa,ya,R);

    cout<<"Enter principal and time(in years)"<<endl;
    cin>>pa>>ya;
    fixed fd3(pa,ya);

    fd1.display();
    fd2.display();
    fd3.display();
}

1 个答案:

答案 0 :(得分:2)

您有using namespace stdstd::fixed以及::fixed类型,因此不明确。最佳解决方案可能是避免using namespace std并避免使用与命名空间std冲突的名称,但您可以通过将fixed fd1(...)更改为::fixed fd1(...)来最快地修复它。前面的::显式指定fixed不在命名空间内。