У меня есть класс примерно так:
template<typename T>
class wrapper
{
public:
operator const T & () const
{
return value;
}
private:
T value;
};
Затем я использую его с такой структурой:
struct point { float x; float y; };
//...
wrapper<point> myPoint;
std::cout << myPoint.x;// error: no member x or whatever.
Мне интересно, есть ли способ разрешить это без необходимости делать ((point)myPoint).x. Я знаю, что могу перегрузить оператор ->, но я бы предпочел этого не делать, поскольку предполагается, что он «притворяется» не указателем.
static_cast<point const &>(myPoint).x
. - person Kerrek SB   schedule 03.08.2012operator()
и использоватьmyPoint().x;
, если вы пытаетесь избежать длины. Однако это имеет меньше смысла, чемoperator->
. - person chris   schedule 03.08.2012