c++ - 如何正确包含 wxObjArray?

标签 c++ macros c-preprocessor wxwidgets

我在 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_OBJARRAYWX_DEFINE_OBJARRAY。后者转到实现文件。

reference有完整的用法示例和更多评论。


您也可以只使用 std::vector

关于c++ - 如何正确包含 wxObjArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042564/

相关文章:

c++ - 编译器是否在全局符号表中包含没有静态修饰符的全局变量?

c++ - 如何公开大量 protected 内部类函数?

c++ - 为什么在函数定义中缺少正式参数名称的 C++ 代码编译时没有警告?

c++ - 粘贴形成了一个无效的处理 token '.'

c++ - 又一个逻辑

c++ - 在没有括号的宏中使用逗号 : How can I mix and match with a template?

macros - Lisp:在宏中扩展属性名称

objective-c - 访问预处理器宏定义的值

C++ 宏不正确地终止宏调用

ios - #Define 和 Float 之间的区别?