4

我尝试在 Ah 文件中执行以下操作:

#include "Bar.hpp"

#import <Foundation/Foundation.h>

namespace foo 
{
  struct A : Bar::B
  {
    public:

    A() : Bar::B() {}

    id delegate;

    virtual void OnEvent(...);
  };
}

但是我遇到了无数错误,例如“我不知道 NSString 是什么”。我该如何正确地做到这一点?

4

2 回答 2

5

你把它包含在一个.cpp文件中?将其重命名为.mm(这是 Objective-C++ 的正确文件扩展名)。

于 2012-08-28T16:12:27.533 回答
2

如果您想在“常规”C++ 类(而不是 Objective C++)中使用您的 Objective C 类之一,您可以使用本文中描述的技巧,归结为包含<objc/objc-runtime.h>而不是<Foundation/Foundation.h>,并使用struct objc_object原地包装一个“真正的”Objective C 对象。

#ifdef __OBJC__
@class ABCWidget;
#else
typedef struct objc_object ABCWidget;
#endif

namespace abc
{
  class Widget
  {
    ABCWidget* wrapped;
  public:
    Widget();
    ~Widget();
    void Reticulate();
  };
}
于 2012-08-28T16:17:15.793 回答