gpt4 book ai didi

c++ - #including一个类头没有指定类型

转载 作者:行者123 更新时间:2023-11-28 01:04:03 25 4
gpt4 key购买 nike

我在我的 wxWidgets 应用程序中遇到了一个非常奇怪的问题。我想做的是使用自定义 wxPanel 资源来允许一些冗余控制并提供让我更轻松地工作的方法。在我尝试将对主框架中资源的访问权限传递给每个面板之前,这个问题并没有发生。

我所做的是使用#include 将wxPanel 资源的类头包含在主类的头中。但是,当尝试声明 CopyRow 类型的资源时,它位于我包含的头文件中,出现错误 CopyRow does not name a type

这是主类头的代码,

#ifndef CPAMOUNTMAIN_H
#define CPAMOUNTMAIN_H

//(*Headers(CPAmountFrame)
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/menu.h>
#include <wx/spinctrl.h>
#include <wx/statline.h>
#include "CopyRow.h"
#include <wx/panel.h>
#include <wx/frame.h>
#include <wx/statusbr.h>
//*)

class CPAmountFrame: public wxFrame
{
public:

CPAmountFrame(wxWindow* parent,wxWindowID id = -1);
void UpdateTotal();
virtual ~CPAmountFrame();

private:

//(*Handlers(CPAmountFrame)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OntotalCopiesChange(wxSpinEvent& event);
static void CallTotalCopies();
//*)

//(*Identifiers(CPAmountFrame)
static const long ID_CUSTOM1;
static const long ID_CUSTOM2;
static const long ID_CUSTOM3;
static const long ID_CUSTOM4;
static const long ID_CUSTOM5;
static const long ID_CUSTOM6;
static const long ID_STATICLINE1;
static const long ID_STATICTEXT1;
static const long ID_SPINCTRL1;
static const long ID_STATICTEXT2;
static const long ID_PANEL1;
static const long idMenuQuit;
static const long idMenuAbout;
static const long ID_STATUSBAR1;
//*)

//(*Declarations(CPAmountFrame)
CopyRow* Custom4;
wxStaticText* totalPrice;
CopyRow* Custom1;
CopyRow* Custom5;
CopyRow* Custom2;
CopyRow* Custom3;
wxPanel* Panel1;
wxStaticText* StaticText1;
wxStatusBar* StatusBar1;
wxStaticLine* StaticLine1;
CopyRow* Custom6;
wxSpinCtrl* totalCopies;
//*)

DECLARE_EVENT_TABLE()
};

#endif // CPAMOUNTMAIN_H

这是 CopyRow.h 的代码,

#ifndef COPYROW_H
#define COPYROW_H

#ifndef WX_PRECOMP
//(*HeadersPCH(CopyRow)
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/panel.h>
//*)
#endif
//(*Headers(CopyRow)
#include <wx/spinctrl.h>
//*)
#include "CPAmountMain.h"

class CopyRow: public wxPanel
{
public:

CopyRow(wxWindow* parent,const char* label,wxSpinCtrl* copies,wxWindowID id=wxID_ANY,const wxPoint& pos=wxDefaultPosition,const wxSize& size=wxDefaultSize);
void SetLabel(const char* label);
void SetPrice(double price);
void SetCounter(int value);
int GetCounter();
virtual ~CopyRow();

private:

//(*Declarations(CopyRow)
wxStaticText* copyLabel;
wxSpinCtrl* numCopies;
wxStaticText* copyPrice;
//*)

//(*Identifiers(CopyRow)
static const long ID_SPINCTRL1;
static const long ID_STATICTEXT1;
static const long ID_STATICTEXT2;
//*)

wxSpinCtrl* totalCopies;

//(*Handlers(CopyRow)
void OnnumCopiesChange(wxSpinEvent& event);
//*)
DECLARE_EVENT_TABLE()
};

#endif

任何人都可以向我解释这个错误吗?我现在不知道。

最佳答案

您不能在 CopyRow.h 中包含 CPAMountMain.h,在 CPAMountMain.h 中包含 CopyRow.h!您必须决定要包含文件的顺序。

由于 CPAMountMain.h 仅使用指向 CopyRow 类的指针,您可以使用前向声明而不是包含 CopyRow.h:

// CPAMountMain.h
class CopyRow;

并删除 CPAMountMain.h 中的 #include "CopyRow.h",这应该可以工作。

关于c++ - #including一个类头没有指定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com