cli ++ — Перегрузка оператора в управляемом переполнении стека

Мой класс определяется с помощью: (фрагмент)

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.

0

Решение

Вот способ определить тот же оператор преобразования, но как статический метод, который, как полагают, является более стандартным в управляемой земле.

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

И вот страница, которая документирует синтаксис:

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

1

Другие решения

Я просмотрел много страниц в Google и обнаружил, что документации по перегрузке операторов достаточно, но я нашел ответ:

перегрузка оператора должна быть

operator const PIXELFORMATDESCRIPTOR*()
{
return m_pfd;
}

думал, что я бы поставил ответ здесь на тот случай, если кому-то еще понадобится этот ответ.

0

По вопросам рекламы [email protected]