我的班级定义为:(摘要)

public ref class PixelFormatDescriptor
{
  public:
    PixelFormatDescriptor();
    PixelFormatDescriptor(PIXELFORMATDESCRIPTOR *pfd);

    const PIXELFORMATDESCRIPTOR* operator*(System::Drawing::GLSharp::PixelFormatDescriptor ^p)
    {
      return m_pfd;
    }
...
  private:
    PIXELFORMATDESCRIPTOR *m_pfd;
};


我正在尝试将其用于以下用途:

PixelFormatDescriptor ^pfd = new PixelFormatDescriptor();
::ChoosePixelFormat(m_hdc, pfd);


我的问题是ChoosePixelFormat期望pfd是const PIXELFORMATDESCRIPTOR *,我该如何解决运算符重载,以允许我传递PixelFormatDescriptor ^并让它自动返回PIXELFORMATDESCRIPTOR *,而无需实现命名属性或获取方法。

最佳答案

这是定义相同转换运算符的方法,但是它是一种静态方法,被认为在受管地区更为标准。

static operator PIXELFORMATDESCRIPTOR* (PixelFormatDescriptor ^p)
{
    return p->m_pfd;
}


这是记录语法的页面:

http://msdn.microsoft.com/en-US/library/vstudio/047b2c75.aspx

关于c++ - 托管C++中的运算符重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16926866/

10-12 01:10