operator-overloading - 模棱两可的重载:运算符(类对象,int)
问题描述
我想学习模板和运算符重载的目的:比较向量/整数的长度。
前任。(2,5) > 5 例如。(1,0) < (5,2)
这是我的模板:
template<class T, class U>
void vectorCmp(T x, U y)
{
cout<<"Call Function Template"<<endl;
// operator overloading
if(x>y)
cout<<x<<endl;
else if(y>x)
cout<<y<<endl;
else if(x==y)
cout<<"The length is equal"<<endl;
}
这是我的 Vector 类:
class Vector
{
// operator overloading
friend bool operator>(Vector & v1, Vector & v2);
friend bool operator>(Vector & v, int l);
friend bool operator>(int l, Vector & v);
friend ostream & operator<<(ostream & os, Vector & v);
friend ostream & operator<<(ostream & os, int l);
private:
int x;
int y;
public:
Vector(int x, int y)
{
cout<<"Call Vector Constructor"<<endl;
this->x = x;
this->y = y;
}
~Vector()
{
cout<<"Call Vector Destructor"<<endl;
}
};
以下是友元函数的定义:
bool operator>(Vector & v1, Vector & v2)
{
cout<<"Call operator overloading"<<endl;
if(sqrt(pow(v1.x,2)+pow(v1.y,2))>sqrt(pow(v2.x,2)+pow(v2.y,2)))
return true;
else
return false;
}
bool operator>(Vector & v, int l)
{
cout<<"Call operator overloading"<<endl;
if(sqrt(pow(v.x,2)+pow(v.y,2))>l)
return true;
else
return false;
}
bool operator>(int l, Vector & v)
{
cout<<"Call \'>\'operator overloading"<<endl;
if(sqrt(pow(v.x,2)+pow(v.y,2))<l)
return true;
else
return false;
}
ostream & operator<<(ostream & os, Vector & v)
{
os<<"Call \'<<\' operator overloading"<<endl;
os<<"The biggest length is "<<sqrt(pow(v.x,2)+pow(v.y,2))<<endl;
return os;
}
ostream & operator<<(ostream & os, int l)
{
os<<"Call \'<<\' operator overloading"<<endl;
os<<"The biggest length is "<<l<<endl;
return os;
}
比较向量/整数长度的三种情况:
-> 向量/整数
-> 矢量/矢量
-> 整数/向量
有两种情况需要计算:
-> cout << 向量
-> cout << 整数
以下是我的主要功能:
int main()
{
int len = 10;
Vector vec1(12,3);
Vector vec2(2,5);
vectorCmp(len,vec1);
vectorCmp(vec2,len);
vectorCmp(vec1,vec2);
return 0;
}
当我编译时,发生错误!
错误:'operator<<' 的重载不明确(操作数类型为 'std::basic_ostream' 和 'int')
我不明白为什么用整数重载“<<”是错误的
感谢您解决我的问题!
解决方案
推荐阅读
- python-3.x - 用实际值替换指标值
- vb.net - 如何在文本框中将 60 格式化为 01m:00s?在 vb.net
- php - laravel 访问子查询内的外部查询列
- java - 如何从Java中结构类似于XML的文件中获取特定元素
- google-apps-script - 可以使用 QUERY 在同一个工作簿中组合多个工作表吗?
- javafx - 如何从 javafx new Scene 自动运行代码
- wpf - 当列表视图中出现重复行时,listview.ScrollIntoView(listview.SelectedItem) 不起作用
- html - 网格项目的响应式视图,使它们彼此重叠
- c++ - 我在 C++ 中实现了我自己的平方根函数以获得高达 9 点的精度,但它不起作用
- xamarin.forms - 我可以指定collectionView中每个元素的宽度和高度吗?