我正在尝试完成我的任务。它说在Distance类中创建一个重载*运算符,以便可以将两个距离相乘。这是我的程序:
#include<iostream>
using namespace std;
class distance
{
private:
int a;
public:
distance():a(10){}
distance(int x)
{
a=x;
}
void print()
{
cout<<"\n a = "<<a<<" \n ";
}
distance operator *(distance);
};
distance distance :: operator *(distance d)
{
a=a*d.a;
return distance(a);
}
int main()
{
distance d1,d2,d3;
d1.print();
d2.print();
d3.print();
d3=d1 * d2;
d3.print();
return 0;
}
但是我收到一个编译错误,说:
'distance' : ambiguous symbol.
当我在VC++上运行它时
但是它在Turbo C上运行良好(通过较小的更改:
#include<iostream.h>
)。请解释我在哪里弄错了。提前致谢。
最佳答案
已经有一个名为std::distance
的函数,您正在通过using namespace std
将其引入范围,并且该函数与distance
类冲突。
给您的类(class)打电话(例如Distance
),或者最好删除using namespace std
。
附言这很好地说明了为什么这种方式的using namespace X
通常不是一个好主意。
关于c++ - 我正在尝试完成我的分配。它说在Distance类中创建一个重载*运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7938005/