ゆとりーなの日記

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

Objective-C

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

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

CocoaのC++ラップが地味に面倒

この間レポジトリを作った某プロジェクト、密かに合間を見つけて進めてはいるのですが、なかなか問題点も多くてですね。UIViewのラップをどうするかが考え物なわけですよ。 class view : boost::noncopyable { public: explicit view(const CGRect &frame) :…

macのclangはなんか知らんがブロック構文が使える

Macのclangはどうもデフォルトでブロック構文が使えるという機能があるようです。 #include <stdio.h> int main(void) { void (^a)() = ^(){puts("blocks");}; a(); return 0; } これが特になにもオプション付けなくても通ります。最初拡張子が.mや.mmじゃないと駄目</stdio.h>…

Objective-Cとtype_traits

Objective-Cとtype_traitsで遊んでみました。環境はApple clang version 2.1の-std=c++0x -stdlib=libc++付きです。 Objective-C的継承 NSObjectとNSStringはtype_traits的に継承関係とみなされるかどうかです。 #import <iostream> #import <type_traits> #import <Foundation/Foundation.h> int main() { st</foundation/foundation.h></type_traits></iostream>…

あいぽんでtype_traits使ったよ

Objective-Cにはオブジェクトが指定したクラスか派生クラスかを調べるメソッドがあったりしますが、これをC++っぽいキャストとして作ってしまおうという話です。使いかたとしてはこんな感じです。丁度dynamic_castのObjective-C版みたいな雰囲気です。 void …

ブロック構文はC++アルゴリズムに突っ込める

Objective-Cのブロック構文を見ていて、呼び出し方法が通常の函数ポインタや函数オブジェクトと変わらないので最強のテンプレート構文を保持するC++アルゴリズムに突っ込めば動くんじゃないかと思い試してみたら動きました。 #include <iostream> #include <vector> #include <boost/range/algorithm/for_each.hpp> </boost/range/algorithm/for_each.hpp></vector></iostream>…