가정하자 그래서 같은 클래스 (이 스트로브 스트 룹으로 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
를 사용하기위한 구문을 만들 수있는 방법이 있나요 또는 단지 불가능하다 그 순간에?
포인터가 더 잘 작동하지 않습니다. 두 가지 다른 것을 테스트하고 있습니다. 랩핑 된 포인터에 할당 해보십시오. – chris