转发类,无法访问方法
Forwarded class, can't access to method
我正在尝试访问父类的方法,请参阅代码:
#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项目。转发类后,我想访问我的类的方法,但是我收到有关使用无效类型的错误。有什么想法吗?
转发类后,我想访问我的类的方法,但是我收到有关使用无效类型的错误。有什么想法吗?
要实例化或调用类的任何方法,您需要定义。前向声明仅声明存在具有给定名称的类型。
您可以通过放置需要完整定义的代码来解决此问题(例如 wxMenu *CreatePopupMenu ()
) 在实现文件中。
相关文章:
- 通过方法访问结构
- 为了访问方法,从基类动态转换为派生类
- 访问方法的返回类型
- 是否有对 Clang 递归 ASTVisitor 的最终访问方法
- 具有各种访问方法的自定义数据结构
- 另一个子模块错误的 omnet 访问方法 - 调用 'check_and_cast(cModule*&)' 没有匹配函数
- 使用矢量迭代器访问方法
- 从其他 C++ 文件访问方法
- C++箭头运算符重载.如何获取被访问方法的名称
- 访问方法C++时出现问题
- 易失性成员的访问方法
- 在实例化之前访问方法
- 是否不希望将指针存储在具有不同访问方法的多个容器中?
- 在c++中查看类中基于参数的私有变量的访问方法
- 在继承错误之后访问方法
- 最好的方法访问方法的派生类c++
- 是否存在具有多访问方法的可变模板变体
- 为指向类的指针数组制定访问方法时遇到问题
- 转发类,无法访问方法
- 我可以在 Python 中创建我的 C++ 对象,但无法访问方法