私は(これはStroustrup氏によってMethod Wrapper後にモデル化されることに注意してくださいのようなクラスがあるとします。自動型変換
template<class T>
struct Wrapper
{
private:
//This class is implicitly convertable to T&
struct TempRef
{
operator T&();
T& operator()();
~TempRef(); //Executes clean up code
};
struct TempPtr
{
T* operator T->();
~TempPtr(); //Executes clean up code
};
public:
TempRef operator*();
TempPtr operator->();
};
このクラスの目標は、それがT
へのポインタのように動作するためのものです:
そして、それはいくつかのケースで動作します。私は、整数型のラッパーとしてそれを使用したい場合
Wrapper<thing> var;
var->foo();
問題が来る:
Wrapper<int> var;
//*var = 12; //Oops!! Does not work (no automatic conversion)
((int&)(*var)) = 12; //Works but the syntax is a pain
(*var)() = 12; //Good but still could be better
そこで質問はこれです:
は整数型へのポインタと同じ整数型のラッパーとしてWrapper
を使用するための構文を作成する方法はありますか、それは単に不可能です現時点では?
ポインタの方がうまく動作しません。あなたは2つの異なるものをテストしています。ラップされたポインタに割り当ててみてください。 – chris