簡體   English   中英

在Objective-C代碼中使用Objective-C ++類和C ++實例變量

[英]Using an Objective-C++ class with C++ instance variables in Objective-C code

我正在編寫一個Objective-C ++類接口,它必須可以從Objective-C和Objective-C ++中使用。 問題是,因為它必須可以從Objective-C中使用,所以我不能簡單地使用C ++類型。 我想用指針做它,我想出了這個:

@interface SXDiff : NSObject {
@private
#ifdef __cplusplus
  dtl::Diff<std::string, std::vector<std::string> > *_diff;
#else
  void *_diff;
#endif
}

...

@end

這樣做會出現任何問題嗎? 有沒有更好的方法呢?


請注意,使用指針只是為了使Objective-C和Objective-C ++中的ivar大小相同。 ivar只能在SXDiff的類實現中SXDiff (它是@private )。 該實現是用Objective-C ++編寫的。

使用Apple LLVM版本2.0+嘗試將標題中的所有C ++代碼移動到類擴展中。

//SXDiff.h
@interface SXDiff : NSObject {
}

...

@end


//SXDiff.mm
#include "dtl/dtl.hpp"

@interface SXDiff()
{
    dtl::Diff<std::string, std::vector<std::string> > *_diff;
}
@end

@implementation SXDiff

...

@end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM