ゆとりーなの日記

日記的な事を書いて行くと思はれる

どこまでもハイブリッドは出来ないとかそういう話

とあるObj-Cのクラスからしか呼ばないとあるC++クラスのメンバ函数があった場合にはそいつをprivateにしてとあるObj-CのクラスをとあるC++のクラスのfriendにしたいなとか思うわけです。ここでObj-C++のハイブリッド力が試されるわけですが、

class cpp_class;
 
@interface ObjCClass {
 @private
  cpp_class *cpp_;
}

@end
 
class cpp_class {
  void hoge() {}
  
  friend class ObjCClass;
};
 
@implementation ObjCClass

- (void)hoge {
  cpp_->hoge(); // アクセス違反!残当
}

@end

少なくともこれは駄目っぽかったです。取り敢えずfriendはObj-Cクラスに対しては使えないっぽいので似たようなことやりたかったらもう一つアクセス用のC++クラスを作るしかない雰囲気です。friendの部分自体はコンパイルが通ったのでワンチャン期待したのですが残当した感じですね。