【问题标题】:Forwarded class, can't access to method [duplicate]转发类,无法访问方法[重复]
【发布时间】:2015-06-18 05:48:42
【问题描述】:

我正在尝试访问我的父类的方法,请参阅代码:

#include <wx/wx.h>
#include <wx/taskbar.h>
#include <iostream>
#include "appicon.xpm"

class MyFrame; // forward

class mywxTaskBarIcon : public wxTaskBarIcon
{
    private:
        MyFrame *m_parent;
    public:
        mywxTaskBarIcon (MyFrame *parent, const wxIcon& icon) :
            wxTaskBarIcon (), m_parent (parent)
        {
            SetIcon (icon, wxT("Listos"));
        }
        virtual ~mywxTaskBarIcon () {
            std::cout << "died" << std::endl;
        }
    protected:
        virtual wxMenu *CreatePopupMenu () {
            return m_parent->getFileMenu (); // invalid type
        }
};

class MyFrame : public wxFrame
{
    private:
        wxIcon main_icon;
        wxSharedPtr<mywxTaskBarIcon> tray;
    public:
        MyFrame (const wxString& title) :
            wxFrame (NULL, wxID_ANY, title), main_icon(appicon)
        {
            SetIcon (main_icon);
            wxMenuBar *menubar = new wxMenuBar;
            menubar->Append (loadFile(), wxT("&Aplicación"));
            SetMenuBar(menubar);
            tray = wxSharedPtr<mywxTaskBarIcon>(new mywxTaskBarIcon (this, main_icon));
            Centre ();
            Show ();
        }
        wxMenu * getFileMenu () {
            return loadFile ();
        }
    protected:
        wxMenu* loadFile () {
            wxMenu *file = new wxMenu;
            file->Append (wxID_EXIT, wxT("&Salir"));
            return file;
        }
};

class MyApp : public wxApp
{
    public:
        virtual bool OnInit() {
            new MyFrame (wxT("Hola"));
            return true;
        }
};

wxIMPLEMENT_APP (MyApp);
wxDECLARE_APP (MyApp);

如您所见,它是一个 wxWidgets 项目。转发课程后,我想访问我的课程的一个方法,但是我收到关于使用无效类型的错误。有什么想法吗?

【问题讨论】:

标签: c++ class wxwidgets forward-declaration


【解决方案1】:

转发类后,我想访问我的类的一个方法,但我收到关于使用无效类型的错误。有什么想法吗?

要实例化或调用类的任何方法,您需要定义。前向声明仅说明存在具有给定名称的类型。

您可以通过将需要完整定义的代码(例如wxMenu *CreatePopupMenu ())放入实现文件来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2018-06-03
    • 2021-10-18
    • 2014-04-17
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多