inline NSString* toNSString(const std::string& s) { return [[[NSString alloc] initWithCString:s.c_str() encoding:NSUTF8StringEncoding] autorelease]; } # はてなのスーパーpre記法に「objcpp」があったりします
Objective-Cとは SmalltalkのOOPをC言語にくっつけた、Mac王国の公用語。 Objective-C++とは Objective-CとC++をとりあえず一緒にした謎言語。 Objective-C++0x(造語)とは Objective-C++でC++0xを有効にした超言語。 Install(Ubuntu) % sudo aptitude install gobjc++ Makefile #!/bin/make CXX = g++ CXXFLAGS = -O2 -Wall -std=c++0x LDFLAGS = -lobjc OBJS = hello .PHONY: all clean .SUFFIXES: .mm .o .mm: $(CXX) $(LDFLAGS) $(CXXFLAGS) $< -o $@ .mm.o: $(CXX) $(CXXFLAGS) -c $<
この記事は Mac Dev JP Advent Calendar の参加記事 (6 日目) です。 はじめに この記事では、 Objective-C++ で C++11 を使用する例について紹介します。 Objective-C++ とは Objective-C++ は、プログラミング言語 Objective-C と C++ とを多重継承したような言語です。お互いの文法がかち合わないので、混在することができます。極稀に文法がコンフリクトしますが、個人的にはそれで困ったことはありません。文法的にほぼ直交し、お互いのオブジェクトを単なるポインタ値とみなしているため、混在させることができるのです。 Objective-C と C++ の機能をオーバーラップさせるようなことはできません。例えば、 Objective-C のクラスを C++ で継承したりするようなことはできません。 Objective
アンドロイダーが、同社が企画・運営するAndroid情報サイト「アンドロイダー」(http://androider.jp/)において、不正アプリ防止に向けたバージョンアップを行う。公開は10月1日から。 不正アプリ防止への取り組みとして、アプリ開発者であるデベロッパーの身元確認を行う「公認デベロッパー制度」を開始する。個人デベロッパーは申込書と身分証明書コピー、電話/郵送による本人確認を実施。法人デベロッパーに関しては、社判を捺印した申込書と電話/郵送による本人確認を行い、制作者の顔が見えるアプリの情報提供の場を作るという。 また、公認デベロッパーが開発したアプリに対しては、情報保護に効果的なパーミッションを中心としたセキュリティやウイルスチェックをはじめ、人力でも1つ1つ確認。さらに不正アプリの発見やデベロッパーへ情報発信する「隊員」をサイト内で募集していく。 公認デベロッパー、セキュリ
目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。
(追記あり/再追記あり) ブクマ経由で、C++で演算子オーバーロードしたときの演算子決定基準について調べたというのを見たのだけど、書いてあるサンプルコードが演算子オーバーロード以前にちょっとダメだった。 昔書いたテストコードと書いてあるので、今は分かってるのかもしれないけど、ある程度経験を積んだC++プログラマは絶対に(というのは言いすぎでした)virtualデストラクタのないクラスを継承しない(追記やTBやブコメの議論を参照のこと)ので、このサンプルコードを載せて違和感を感じない時点で、演算子オーバーロードをいじるよりもまずはEffective C++を読んだ方がよい。 何がダメか。以下のように、virtualデストラクタがないクラスを継承している。これはダメだ。例え基底クラスのデストラクタですべきことがないのだとしても、継承するつもりのあるクラスにはvirtualデストラクタを作らない
Q1: デストラクタにvirtualをつけろとよく言われるけど、なんで? 挙動が未定義のdeleteを呼び出す可能性があるから Q2: 挙動が未定義だと駄目なの? 超駄目。何が起きても文句は言えない Q3: どんな時に挙動が未定義のdeleteが呼び出されるの? こんなとき // NoVirtualBaseClass : デストラクタにvirtualを持たない // NoVirtualSuperClass : NoVirtualBaseClassを継承 NoVirtualBaseClass * ptr = new NoVirtualSuperClass(); // 挙動が未定義 delete ptr; Q4: 何でそうなるの? delete時点で、ptrは自分がNoVirtualBaseClassのインスタンスだと思ってるから Q5: 何で?NoVirtualSuperClassでnewし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く