Bài tập cài đặt toán tử cộng trừ thể tích của 2 hộp

#include <iostream>
using namespace std;
class box{
    int dai,r,cao;
public:
    friend istream& operator>>(istream&,box&);
    friend ostream& operator<<(ostream&,box&);
    int thetich(){
        return dai*r*cao;
    }
    friend box operator+(box& b,box& c);
    friend box operator-(box& b,box& c);
};
box operator+(box& b,box& c){
        box a;
        a.thetich()=(b.dai*b.r*b.cao)+(c.dai*c.r*c.cao);
        return a;
}
box operator-(box& b,box& c){
        box a;
        a.thetich()=b.thetich()-c.thetich();
        return a;
}
istream& operator>>(istream& s,box& a){
     cout<<"\nnhap dai:";s>>a.dai;
     cout<<"\nnhap chrong:";s>>a.r;
     cout<<"\nnhap chcao:";s>>a.cao;
     return s;
 }
ostream& operator<<(ostream& s,box& a){
  cout<<"the tich"<<;s<<a.thetich();
    return s;
}
int main()
{
    box a,b,c;
    cout<<"nhap 2 box:";cin>>a>>b;
    c=a+b;
    cout<<"tong thetich:"<<c;
    c=a-b;
    cout<<"tong thetich:"<<c;
    return 0;
}

Chả là em muốn cài đặt toán tử tính thể tích 2 hộp nhưng nó cứ bị lỗi như này, anh chị giúp e với


đề bài như này ạ____

Thể tích là phương thức sao gán bằng :smiley:

Chiếu theo yêu cầu thì kiểu trả về phải là…?

3 Likes

Bạn sai ghê đấy, có ai lại gán hàm được gọi bằng 1 giá trị đâu chứ!

Mà bài toán này “củ chuối” phết.
Khi thực hiện phép toán với 2 hình hộp thì mình thắc mắc:
Cộng thể tích cũng đúng. Nhưng kiểu trả về của phép toán cùng kiểu với 2 tham số, chắc chắn là hình hộp rồi. Thế khi tính như vậy thì các chỉ số dài, rộngcao cho hình hộp tổng tính kiểu gì?
Ngoài thể tích, còn có diện tích các mặt và diện tích tiết diện (tổng các mặt) và… tất cả đều phục thuộc vào các chỉ số dài, rộngcao và vị trí của 2 hình hộp với nhau.
Không thể cộng các chỉ số tương đương dài, rộngcao lại. Kết quả là 1 hình to hơn tổng thể tích của 2 hình rất nhiều.

Nói chung là đừng nên ghi đè mấy toán tử này. Cộng và trừ đã đành, nhân còn “chuối” hơn. Có ai “nhân” 2 hình với nhau không nhỉ. :thinking:
Nếu muốn tính tổng thể tích thì chỉ cần tính tổng thể tích mỗi hình là xong, toán tử làm gì cho tung não.

int ttt = a.thetich() + b.thetich();
cout << "Tong the tich 2 hinh la: " << ttt << endl;
3 Likes

mình cũng muốn thế lắm chứ bộ :V ,nhưng mà nó là bài ktra ko làm thế thì bị trừ hết điểm mất :V

Bài kiểm tra tào lao rồi. Không thể tính toán kiểu này được.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?