1

I am trying to write a basic piece of operator overloading code. However, I am getting a few errors which I cannot explain.

Header file:

class Overloading
{
public:
    int number;
    Overloading();
    Overloading(int);
    Overloading operator+(Overloading);
    void vUselessoverloadFunction();
};

C++ code:

Overloading::Overloading()
{}

Overloading::Overloading(int i)
{
    number = i;
}

Overloading Overloading::operator+(Overloading Object2)
{
    Overloading NewObject;
    NewObject.number = number + Object2.number;
    return (NewObject);
}
void Overloading::vUselessoverloadFunction() {

Overloading ObjectOne(15);
Overloading ObjectTwo(24);
Overloading ObjectThree();

ObjectThree = ObjectOne+ObjectTwo;
cout << ObjectOne.number << endl;
cout << ObjectTwo.number << endl;
cout << "Overloaded object value: " << ObjectThree.number << endl;

}

I am getting the following errors:
On line ObjectThree = ObjectOne+ObjectTwo;:
-Assignment of function 'Overloading ObjectThree()'
-Cannot convert 'Overloading' to 'Overloading()' in assignment
and on line cout << "Overloaded object value: " << ObjectThree.number << endl;
-Request for member 'number' in 'ObjectThree', which is of non-class type 'Overloading()'.

Any help would be greatly appreciated!

1 Answers1

3

Overloading ObjectThree(); is a function prototype.

It does not declare a variable ObjectThree. So your compiler outputs an error, albeit a rather confusing one.

This is quite a common error: Google for "most vexing parse".

Bathsheba
  • 231,907
  • 34
  • 361
  • 483