Issue in operator overloading using smart pointers

Viewed 36

I am learning smart pointers in C++11. I am facing an compilation error with operator overloading using smart pointers. Can someone please suggest where I am doing wrong.

Below is the code

#include <iostream>
#include <memory>

using namespace std;

class myClass
{
   private:
   string name;

   public:
   myClass() { }
   myClass(string n) : name(n)  { }

   shared_ptr<myClass> operator + (shared_ptr<myClass> &obj)
   {
      cout << "Operator Overloading" << endl; 
      shared_ptr<myClass> temp;
      temp->name = this->name;
      temp->name += obj->name;
  
      return temp;
   }

   void print()
   {
      cout << name << endl;
   }
};

int main()
{
   shared_ptr<myClass> myPtr1 = make_shared<myClass>("Hello");
   myPtr1->print();

   shared_ptr<myClass> myPtr2 = make_shared<myClass>("Operator Overloading");
   myPtr2->print();

   shared_ptr<myClass> myPtr3;
   myPtr3 = myPtr1 + myPtr2; //Calling Operator overloading
   myPtr3->print();

   return 0;
}
0 Answers
Related