我正在尝试完成我的任务。它说在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/

10-11 22:02
查看更多