#include<iostream> using namespace std; class shared_ptr { public: int *pointer; public: shared_ptr() { pointer = new int; } ~shared_ptr() { delete pointer; } int operator* (); int* operator= (shared_ptr&); }; int shared_ptr:: operator* () { return *(this->pointer); } int* shared_ptr:: operator= (shared_ptr& temp) { return (temp.pointer); } int main() { shared_ptr s1; *(s1.pointer) = 10; cout << *s1 << endl; int *k; k = s1; //error cout << *k << endl; } I am trying to create something like smart pointer.
I am getting the following error while trying to overload operator = .
prog.cpp:39:9: error: cannot convert ‘shared_ptr’ to ‘int*’ in assignment for the k = s1 assignment line. What am I missing here?