【发布时间】:2012-08-03 16:19:32
【问题描述】:
我有一个类似这样的课程:
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。 -
如果长度是您想要避免的,您可以将转换运算符更改为
operator()并使用myPoint().x;。不过,它的意义不如operator->。
标签: c++ casting implicit-conversion