Не могу получить копии / назначить конструкторы работают

0

Я делаю сборку MFC как класс на WinAPI как exersise. Теперь я сталкиваюсь с проблемой, что я получаю ошибку выполнения во время выполнения кода.

В моей главной строке присутствуют следующие строки:

void MyApp::Init(int nCmd)
{
    main.Create(L"This is the MainFrame Window");
    main.ActivateFrame(nCmd);   
    GWnd* p= main.GetActiveView();//Get pointer to the first view of the FrameWnd
    //p->GetID();
}

Записанная строка вызывает ошибку. Конструкторы класса GWnd:

//Standard classname
GWnd::GWnd() :m_ClassName(L"Wnd"), BaseWnd(), m_pOwnerWnd(NULL)
{
    GWnd::Init();
}
//Userdefined Classname
GWnd::GWnd(LPCWSTR ClassName) : m_ClassName(ClassName), BaseWnd(), m_pOwnerWnd(NULL)
{
    GWnd::Init();
}
//Copy constructor
GWnd::GWnd(const GWnd& Wnd) : BaseWnd(GetHwnd()), m_pOwnerWnd(NULL)
{
    m_ClassName = L"Wnd";
}

Функция назначения:

//Operators
operator HWND() { return BaseWnd<GWnd>::GetHwnd(); }
GWnd operator=(GWnd Wnd) 
{
    GWnd tmp(Wnd);
}

Я надеюсь, что строк кода достаточно для ваших ответов. Кто-нибудь понимает проблему, с которой я сталкиваюсь? И мог бы дать мне подсказку, куда смотреть дальше?

  • 0
    Я предполагаю, что ошибка в том, что P равен NULL, а вы разыменовываете указатель NULL? Нигде в приведенном выше коде вы на самом деле не создаете экземпляр (по крайней мере, в Init)
  • 0
    Почему ваш оператор присваивания не возвращает значение, если вы специально указали, что он возвращает объект GWnd ? Кроме того, знаете ли вы цель конструктора копирования и оператора присваивания? Его цель - сделать копию переданного объекта - я не вижу, что происходит в вашем конструкторе копирования.
Показать ещё 12 комментариев
Теги:
mfc

1 ответ

0

попробуйте добавить это:

GWnd* p= (GWnd*)main.GetActiveView();

вместо этого:

GWnd* p= main.GetActiveView();

и затем используйте это

p->GetDlgCtrlID()
  • 0
    Не используйте C-стиль в C ++
  • 0
    @RyanHaining: почему бы и нет?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню