#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;
}
スマートポインターのようなものを作成しようとしています。
operator = をオーバーロードしようとすると、次のエラーが発生します。
prog.cpp:39:9: エラー: k = s1 代入行の代入で 'shared_ptr' を 'int*' に変換できません。ここで何が欠けていますか?