ポインターを逆参照して代入すると、ポインターが指しているものが変更され、ポインターが指しているものが呼び出されませんoperator=
。私はそれを証明するためにこのプログラムを作りました:
#include <iostream>
struct S
{
void operator =(int)
{ x = 5; }
operator int*()
{
return &x;
}
int x;
};
std::ostream& operator <<(std::ostream& out, S const& s)
{
return out << s.x;
}
int main()
{
S s;
int *x = s;
*x = 10;
std::cout << *x;
}
これにより、10 が出力されます。実行しても、オブジェクトのポイント*x = 10
は変更されません。x
どうすればそうすることができますか?(C++11 ソリューションは大歓迎です)