gpt4 book ai didi

c++ - 使用点运算符触发强制转换运算符

转载 作者:行者123 更新时间:2023-11-30 02:03:31 24 4
gpt4 key购买 nike

我有这样一个类:

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 的情况下允许这样做。我知道我可以重载 -> 运算符,但我不想这样做,因为它应该“假装”为非指针。

最佳答案

您可以使用 -> 而不是 实现一些类似的东西。:

template<typename T>
class wrapper
{
public:
operator const T & () const // will this still be needed now?
{
return value;
}

T* operator->() { return &value; }
T const* operator->() const { return &value; }

private:
T value;
};

然后:

struct point { float x; float y; }

//...

wrapper<point> myPoint; // this needs to be initialised!
std::cout << myPoint->x;

关于c++ - 使用点运算符触发强制转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11799540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com