我想使用运算符'<'但我不知道这个问题的解决方案是什么。我想制作运算符'<'的操作(哪种类型是布尔型(,用于比较两个长方体的体积。我如何得到这个结果?
我也不知道如何在函数GetBox((中返回多个值,我该如何解决它?我想单独返回宽度、高度和深度。
这是以下代码:
#include<iostream>
using namespace std;
class Box{
private:
int width;
int height;
int depth;
public:
Box():width(0),height(0),depth(0){};
Box(int w, int h, int d):width(w),height(h),depth(d){};
void BoxVolume();
void SetBox(int w1,int h1,int d1);
int GetBox();
friend ostream& operator<<(ostream &exit,const Box &A);
Box operator<(Box&);
};
void Box::SetBox(int w1,int h1,int d1){
width=w1;
height=h1;
depth=d1;
}
int Box::GetBox(){
return width,height,depth;
}
void Box::BoxVolume(){
cout<<"Volume: "<<width*height*depth<<endl;
}
ostream& operator<<(ostream &exit, const Box &B){
Box temp2;
exit<<B.width<<" "<<B.height<<" "<<B.depth<<" "<<endl;
return exit;
}
Box Box::operator<(Box &K){
}
int main(){
Box Box1;
cout<<"Details about first box:"<<endl;
Box1.SetBox(1,3,5);
Box1.GetBox();
cout<<Box1;
Box1.BoxVolume();
cout<<endl;
Box Box2;
cout<<"Details about second box:"<<endl;
Box2.SetBox(2,4,6);
Box2.GetBox();
cout<<Box2;
Box2.BoxVolume();
}
正如您所说,运算符<应返回布尔值,因此函数签名应为:
bool operator<(const Box &other) const;
如果你想比较体积,你可以创建一个函数,返回计算的体积:
int getVolume() const { return width * height * depth; }
有了这个,你就可以很容易地实现比较器功能:
bool Box::operator<(const Box &other) const {
return getVolume() < other.getVolume();
}
不,从一个函数返回的值不能超过一个。如果要执行此操作,则需要定义一个包含多个值的结构,并返回该结构的实例。