0

我的班级定义为:(片段)

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 是 a const PIXELFORMATDESCRIPTOR *,我将如何修复运算符重载以允许我传递 aPixelFormatDescriptor ^并让它PIXELFORMATDESCRIPTOR *自动返回而无需实现命名属性或 Get 方法。

4

2 回答 2

1

这是定义相同转换运算符的方法,但作为静态方法,相信在托管领域更标准。

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

这是记录语法的页面:

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

于 2013-06-04T21:03:01.793 回答
0

我在google上浏览了很多页面,发现关于重载运算符的文档非常缺乏,但我找到了答案:

运算符重载应该是

operator const PIXELFORMATDESCRIPTOR*()
{
  return m_pfd;
}

以为我会把答案放在这里,以防万一其他人需要这个答案。

于 2013-06-04T20:47:22.627 回答