C++ ライブラリに NSData、NSDictionary、および NSArray に相当するものがあるかどうか疑問に思っていました。ない場合、これらのクラスを提供する既知の一般的なフレームワークはありますか?
よろしく
C++ ライブラリに NSData、NSDictionary、および NSArray に相当するものがあるかどうか疑問に思っていました。ない場合、これらのクラスを提供する既知の一般的なフレームワークはありますか?
よろしく
これらのクラスの機能は言語によって大幅に管理されているため、そうではありません。
一方、std::vector (配列とデータ) と std::map (辞書) があります。これらはまったく同等ではありませんが、同様の目的を果たします。
STL には、NSDictionary の代わりに使用できるマップと、NSArray の代わりに使用できるベクトルがありますが、特定の機能が欠落しており、さらにコーディングが必要になる可能性があるため、もちろん「変換」は簡単ではありません。dictionaryWithContentsOfURL:
たとえば、NSDictionaryのセレクターを「エミュレート」するには、C++ で追加のコーディングを行い、URL を解析し、リモート リソースの場合は接続して取得し、データを非シリアル化する必要があります。もちろん、他のライブラリが役立つかもしれませんが(ブースト?)、要点は、NSDictionary(およびその他)のいくつかの特別な機能を移植する必要がある場合は、より多くのコードを記述する必要があるということです。
一方、基本的な辞書と配列機能だけを使用すると、「変換」はかなり簡単になります。
によって「エミュレート」される可能性がある NSData の同様の引数std::stringbuf
。
GNUstepライブラリも使用できます。GNUstep は GNU オープン Cocoa フレームワークであり、Cocoa に関するほとんどすべて (AppKit および Foundation クラス) を提供します。GNUstep は Apple Mac OS X 以外のプラットフォーム用に存在するため、これらのプラットフォームに Cocoa アプリを移植できます。Objective-C++ を使用すると、STL と Cocoa/GNUstep フレームワークの両方を使用でき、2 つの世界の長所を活用できます (OO プログラミングと、異なる「起源」のクラス/オブジェクト間の「相互作用」に制限があります)。このような混合を試みましたが、注意を払うことでいくつかの利点が得られる可能性があります.