我在 TMainFrame.h
中定义了一个 wxObjArray,如下所示:
#ifndef __TMainFrame__
#define __TMainFrame__
#include "MyApp_gui.h"
//// end generated include
#include "TRunThread.h"
#include <wx/dynarray.h>
class TMove;
WX_DECLARE_OBJARRAY(TMove, TMoveArray);
/* ...Class TMainFrame... */
/* ...Class TMove... */
#endif // __TMainFrame__
现在我想在我的 TRunThread.h
中使用 WX_DECLARE_OBJARRAY 创建的类 TMoveArray。
但是找不到那个类(GCC: 'TMoveArray' has not been declared)
#ifndef TRUNTHREAD_H_INCLUDED
#define TRUNTHREAD_H_INCLUDED
#include <wx/wx.h>
#include "TMainFrame.h"
// doesn't work: WX_DECLARE_OBJARRAY(TMove, TMoveArray);
class TRunThread : public wxThread
{
public:
wxThreadError Create(TMoveArray moves);
};
#endif // TRUNTHREAD_H_INCLUDED
源文件TRunThread.cpp
:
#include <wx/arrimpl.cpp> // this is a magic incantation which must be done!
WX_DEFINE_OBJARRAY(TMoveArray);
#include "TRunThread.h"
/* ...Code... */
我也尝试过使用 WX_DEFINE_OBJARRAY
指令。
问题:如何正确地包含一个wxObjArray?
最佳答案
您将同时需要 WX_DECLARE_OBJARRAY
和 WX_DEFINE_OBJARRAY
。后者转到实现文件。
reference有完整的用法示例和更多评论。
您也可以只使用 std::vector
。
关于c++ - 如何正确包含 wxObjArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042564/