I am getting a garbage output when I add two objects

I am adding two objects:
Box3 = Box1 + Box2;

The output is this:
Volume of Box1 : 210
Volume of Box2 : 1560
Volume of Box3 : 5400

The sum of Box1 & Box2 = 5.56112e-308
Process returned 0 (0x0) execution time : 2.124 s
Press any key to continue.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  #include <iostream>
#include<cstdlib>
#include<cctype>
using namespace std;

class Box {
   public:
       void print(ostream& outs) const;
      double getVolume(void) {
         return length * breadth * height;
      }
      void setLength( double len ) {
         length = len;
      }
      void setBreadth( double bre ) {
         breadth = bre;
      }
      void setHeight( double hei ) {
         height = hei;
      }

      // Overload + operator to add two Box objects.
      Box operator+(const Box& b) {
         Box box;
         box.length = this->length + b.length;
         box.breadth = this->breadth + b.breadth;
         box.height = this->height + b.height;
         return box;
      }

   private:
      double length;      // Length of a box
      double breadth;     // Breadth of a box
      double height;      // Height of a box
};
void Box::print(ostream& outs) const
{
    double sum;
    outs << sum;
}

// Main function for the program
int main() {
   Box Box1;                // Declare Box1 of type Box
   Box Box2;                // Declare Box2 of type Box
   Box Box3;
   // double sum;
                  // Declare Box3 of type Box
   double volume = 0.0;     // Store the volume of a box here

   // box 1 specification
   Box1.setLength(6.0);
   Box1.setBreadth(7.0);
   Box1.setHeight(5.0);

   // box 2 specification
   Box2.setLength(12.0);
   Box2.setBreadth(13.0);
   Box2.setHeight(10.0);

   // volume of box 1
   volume = Box1.getVolume();
   cout << "Volume of Box1 : " << volume <<endl;

   // volume of box 2
   volume = Box2.getVolume();
   cout << "Volume of Box2 : " << volume <<endl;

   // Add two object as follows:
   Box3 = Box1 + Box2;

   // volume of box 3
   volume = Box3.getVolume();
   cout << "Volume of Box3 : " << volume <<endl;

    //Box sum(Box1, Box2, Box2);
    Box3 = Box1 + Box2;

    cout <<endl;
   cout << "The sum of Box1 & Box2 = " ;
    Box3.print(cout);

   return 0;
}

I am getting closer and closer to the answer that I want.
But not exactly correct so far

Please assist
Line 39 attempts to output the variables defined on the preceding line ... which hasn't been assigned a value.
1
2
3
4
5
void Box::print(ostream& outs) const
{
    double sum;
    outs << sum;     // and just what is sum here?
}


Difficult to see what you would want to output at this point, anyway. A box is just an object.

How about
1
2
3
4
5
6
void Box::print(ostream& outs) const
{
    outs << "I am a box of length " << length 
         << ", breadth " << breadth
         << " and height " << height << '\n';
}
Last edited on
Topic archived. No new replies allowed.