Мой класс определяется с помощью: (фрагмент)
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
ожидает, что пфд будет const PIXELFORMATDESCRIPTOR *
Как бы я исправить перегрузку оператора, чтобы позволить мне передать PixelFormatDescriptor ^
и вернуть PIXELFORMATDESCRIPTOR *
автоматически без необходимости реализации именованного свойства или метода Get.
Вот способ определить тот же оператор преобразования, но как статический метод, который, как полагают, является более стандартным в управляемой земле.
static operator PIXELFORMATDESCRIPTOR* (PixelFormatDescriptor ^p)
{
return p->m_pfd;
}
И вот страница, которая документирует синтаксис:
http://msdn.microsoft.com/en-US/library/vstudio/047b2c75.aspx
Я просмотрел много страниц в Google и обнаружил, что документации по перегрузке операторов достаточно, но я нашел ответ:
перегрузка оператора должна быть
operator const PIXELFORMATDESCRIPTOR*()
{
return m_pfd;
}
думал, что я бы поставил ответ здесь на тот случай, если кому-то еще понадобится этот ответ.