繁体   English   中英

如何在C ++头文件中使用Objective-C?

[英]How to use Objective-C in C++ header?

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

#include "Bar.hpp"

#import <Foundation/Foundation.h>

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

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

    id delegate;

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

但是我得到了很多错误,比如'我不知道NSString是什么'。 我该怎么做?

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

如果你想在你的“常规”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();
  };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM