Имам клас нещо подобно:
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