所以我只花了大约4个小时的夜间练习来解决此错误,但我不能。它在C++中的wxw应用程序。
我有一个应用程序类,在其中声明我的主窗口。然后,我在第一个窗口类中声明第二个窗口。我想在第二个窗口类中引用第一个窗口的类。我只是不断收到此错误。
我的App类头文件:
#ifndef STUDENTONATORAPP_H
#define STUDENTONATORAPP_H
#include <wx/app.h>
#include <wx/dialog.h>
#include <AddMarkOne.h>
#include <StudentonatorMain.h>
class StudentonatorApp : public wxApp
{
public:
virtual bool OnInit();
};
#endif // STUDENTONATORAPP_H
我的主要wxDialog头文件:
#ifndef STUDENTONATORMAIN_H
#define STUDENTONATORMAIN_H
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include "AddMarkOne.h"
#include "StudentonatorApp.h"
#include "student.h"
#include <wx/button.h>
#include <wx/statline.h>
#include <wx/grid.h>
#include <list>
#include <iostream>
#include <fstream>
using namespace std;
class StudentonatorDialog: public wxDialog
{
public:
StudentonatorDialog(wxDialog *dlg, const wxString& title);
void refresh();
~StudentonatorDialog();
int ID_counter = 0;
list<student*> GetList(){return StudentList;};
protected:
enum
{
idBtnAbout,
idBtnAddStudent,
idBtnRemoveStudent,
idBtnEditStudent,
idBtnAddMark
};
wxStaticText* m_staticText1;
...
list<student*> StudentList;
AddMarkOne* dlgaddmark1;
private:
void OnClose(wxCloseEvent& event);
...
int numstrlevelcounter=0;
};
#endif // STUDENTONATORMAIN_H
这是我的第二个wxDialog类:
#ifndef ADDMARKONE_H
#define ADDMARKONE_H
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include <wx/dialog.h>
#include <wx/button.h>
#include <wx/statline.h>
#include <wx/grid.h>
#include <list>
#include <iostream>
#include <fstream>
#include "StudentonatorMain.h"
#include "student.h"
#include "StudentonatorApp.h"
using namespace std;
class AddMarkOne: public wxDialog
{
public:
AddMarkOne(wxDialog* dlg1, const wxString& title, StudentonatorDialog* maindialog);
~AddMarkOne();
int ID_counter = 0;
void SetID(int ID){this->ID = ID;}
protected:
enum
{
idBtnNext,
};
wxStaticText* m_staticText1;
wxStaticLine* m_staticline1;
wxButton* BtnNext;
private:
void OnClose(wxCloseEvent& event);
int i;
int j;
DECLARE_EVENT_TABLE()
int ID;
};
#endif // ADDMARKONE_H
请帮忙 :)
最佳答案
据我对C++
的了解,您不能在类声明(例如Java语言)中为类成员分配值,您应该在构造函数中执行此操作
int ID_counter = 0;
和
int numstrlevelcounter=0;
UPDATE :
您已经声明了
AddMarkOne
类,它引用了StudentonatorDialog
,并声明了StudentonatorDialog
类,它引用了AddMarkOne
。似乎这里有一个循环。并且使用此循环,您将无法解决此问题。我的建议是完善您的主要架构,继承和多态性您的
#include
语句必须具有以下模式:1.首先是更多的抽象类include语句,然后是继承的类include语句
2.在更抽象的类中,您不应引用继承的类。
3.您的继承链必须像树(没有任何循环)之类的东西作为您的include语句