使用 wxCreatePersistentObject 将选项卡保存在内存中
Using wxCreatePersistentObject to save tabs in a memory
我正在使用 wxCreatePersistentObject 将选项卡保存在内存中,但是我遇到了一些问题。
使用http://docs.wxwidgets.org/trunk/overview_persistence.html#persistence_defining
我将逐步创建这个持久类。我想保存继承自auiNotebook的tabpanel
class myPersistentClass : public wxPersistentObject{
public:
myPersistentClass(TabPanel *panel);
wxString GetKind() const;
wxString GetName() const;
void Save() const;
bool Restore();
TabPanel * panel_;
wxPersistentObject * wxCreatePersistentObject (PropertyTabPanel *panel);
};
这是我的定义:
myPersistentClass::myPersistentClass(TabPanel *panel):wxCreatePersistentObject(panel) {
}
wxPersistentObject * wxCreatePersistentObject (TabPanel *panel){
return new myPersistentClass(panel);
}
wxString myPersistentClass::GetKind() const{
return "PropertyTabPanel";
}
wxString myPersistentClass::GetName() const{
return "namesomething";
}
void myPersistentClass::Save() const{
wxPersistentObject::SaveValue("something", this);
}
bool myPersistentClass::Restore(){
return wxPersistentObject::RestoreValue(GetName(), this);
}
它给 ma 一个构造函数的编译器错误。我不确定我做错了什么。另外,如果有人可以告诉我我是否在正确的轨道上创建这个 wxPersistentObject
真的不清楚你想在这里做什么。持久对象在销毁时将其状态保存在持久存储中(例如在磁盘上),并在再次创建时恢复它。一个典型的例子是顶层 window 记住它在程序运行之间的大小和位置,或者笔记本记住它最后选择的页面。因此,如果您想以这种方式保存 TabPanel
状态,您可以定义 PersistentTabPanel
,但除非 TabPanel
不是从 wxWindow
派生的,否则您应该从 wxPersistentWindow<TabPanel>
而不是直接 wxPersistentObject
本身。
至于ctor中的错误,在ctor初始化列表中调用wxCreatePersistentObject()
从C++的角度来看没有任何意义,你使用初始化列表来初始化基类 和 members 和这个函数当然都不是。正如您 link 声明的文档,您需要 定义 此函数采用 TabPanel*
.
我正在使用 wxCreatePersistentObject 将选项卡保存在内存中,但是我遇到了一些问题。
使用http://docs.wxwidgets.org/trunk/overview_persistence.html#persistence_defining 我将逐步创建这个持久类。我想保存继承自auiNotebook的tabpanel
class myPersistentClass : public wxPersistentObject{
public:
myPersistentClass(TabPanel *panel);
wxString GetKind() const;
wxString GetName() const;
void Save() const;
bool Restore();
TabPanel * panel_;
wxPersistentObject * wxCreatePersistentObject (PropertyTabPanel *panel);
};
这是我的定义:
myPersistentClass::myPersistentClass(TabPanel *panel):wxCreatePersistentObject(panel) {
}
wxPersistentObject * wxCreatePersistentObject (TabPanel *panel){
return new myPersistentClass(panel);
}
wxString myPersistentClass::GetKind() const{
return "PropertyTabPanel";
}
wxString myPersistentClass::GetName() const{
return "namesomething";
}
void myPersistentClass::Save() const{
wxPersistentObject::SaveValue("something", this);
}
bool myPersistentClass::Restore(){
return wxPersistentObject::RestoreValue(GetName(), this);
}
它给 ma 一个构造函数的编译器错误。我不确定我做错了什么。另外,如果有人可以告诉我我是否在正确的轨道上创建这个 wxPersistentObject
真的不清楚你想在这里做什么。持久对象在销毁时将其状态保存在持久存储中(例如在磁盘上),并在再次创建时恢复它。一个典型的例子是顶层 window 记住它在程序运行之间的大小和位置,或者笔记本记住它最后选择的页面。因此,如果您想以这种方式保存 TabPanel
状态,您可以定义 PersistentTabPanel
,但除非 TabPanel
不是从 wxWindow
派生的,否则您应该从 wxPersistentWindow<TabPanel>
而不是直接 wxPersistentObject
本身。
至于ctor中的错误,在ctor初始化列表中调用wxCreatePersistentObject()
从C++的角度来看没有任何意义,你使用初始化列表来初始化基类 和 members 和这个函数当然都不是。正如您 link 声明的文档,您需要 定义 此函数采用 TabPanel*
.