gpt4 book ai didi

c++ - 我正在尝试完成我的作业。上面写着 In a Distance class create an overloaded * operator

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:05 24 4
gpt4 key购买 nike

我正在尝试完成我的作业。它说在距离类中创建一个重载的 * 运算符,以便可以将两个距离相乘。这是我的程序:

#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 冲突> 类。

给你的类起别的名字(例如 Distance),或者更好的是,删除 using namespace std

附言这很好地说明了为什么以这种方式使用命名空间 X 通常不是一个好主意。

关于c++ - 我正在尝试完成我的作业。上面写着 In a Distance class create an overloaded * operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com