此代码中的代码块显示错误:第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();
}
答案 0 :(得分:2)
您有using namespace std
且std::fixed
以及::fixed
类型,因此不明确。最佳解决方案可能是避免using namespace std
并避免使用与命名空间std冲突的名称,但您可以通过将fixed fd1(...)
更改为::fixed fd1(...)
来最快地修复它。前面的::
显式指定fixed
不在命名空间内。