HOWTO: Use a C++ Library from Swift Swift is an exciting new programming language combining the best of older languages such as Java, C++, Objective-C, JavaScript etc. However, huge code bases exist that are written in C and C++. What if you have a library developed in C++ and want to leverage that code in you Swift applications? Here we will see how to incorporate a simple C++ library into a triv
要するにVBAでいうVariant型的な物をC++でどう作るのかというお話。この問題に対する設計の定石としては以下のようなクラスを設計することで対応する。 今回は”代入できる”という機能だけ作成。ここにtemplateで指定した型が持つべき関数を規定・制限したり、各種型へのキャストを用意すれば「特定のインターフェイスをもった型だけを格納できる型」として使うこともできて大変便利。Boostライブラリではshared_ptrやその名の通りのanyの実装のために使われている技法。 #include<iostream> using namespace std; //自作のAny型 class Any { public : template<class T> Any(const T & x) : _x(new Any_Derived<T>(x)){} ~Any(){delete _x;} priva
C#の拡張メソッドやRubyのオープンクラス、Swiftのextension、Objective-Cのカテゴリーの活用例に近い感覚のものを実現させます。 既存のクラスにメソッド(メンバ関数)を追加する方法と関数(フリー関数)で代替する方法、演算子の多重定義を活用する方法の3種類の方法を紹介します。 フリー関数(例:print(std::string("s"));) 演算子関数(例:std::string("s")-print;) メンバ関数(例:std::string("s").print();) オススメはフリー関数版の利用です。その他のイディオムは扱いが難しく、実用性には難があります。 フリー関数 もっとも簡単で手軽な方法です。 フリー関数の第一引数にオブジェクトの参照を渡し、その参照値を元に関数内で独自処理を記述していきます。 void print(const std::string
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 仕事としてソースコードを書く以上、ソースコードを利用する人、ソースコードを書く本人がともに幸せになるようなソースコードの書き方をすべきだと私は考えている。Doxygen(日本語による解説サイト)を使って、詳細の実装の仕様書を作成するように推進している理由の一つは、ソースコードとは別のドキュメントを作成する手間を減らして、負担を減らすことも目的の1つだ。 とりわけ若手エンジニアのみなさん、 仕事としてソフトウェアを書くのだから、仕事を通じて自分が幸せになるようなソフトウェアの書き方をしてください。もし、ここに例示してあるような書き方をして
C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 -> C++23 と更新されています。 なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。 ここは、Programming Place Plus の C++編のトップページです。C++ の文法機能や標準ライブラリに関する網羅的な情報を、C++03 ベースで扱っています。 C++編は、C言語の知識があることを前提として書かれています。C言語については、C言語編を参照してください
C++入門 基礎知識は仮定しません あなたは 人目のお客さんです。 ゆっくりしていってください。 C++入門1 プログラミングの基礎知識 C++入門2 coutを使った出力 C++入門3 cinを使った入力 C++入門4 オブジェクト指向について C++入門5 クラスを作ろう C++入門6 クラスを作ろう(補足) C++入門7 クラスの練習 C++入門8 コンストラクタの引数 C++入門9 クラス間の関係 C++入門10 乱数 C++入門11 while文とfor文 C++入門12 値を戻す関数 C++入門13 値を戻す関数の例 C++入門14 パブリックとプライベート C++入門15 継承 C++入門16 継承の練習 C++入門17 さらに継承 C++入門18 デストラクタ C++入門19 配列 C++入門20 ポインタ C++入
今まで、いろいろな演算子について話してきました。今回は一風変わった演算子について話してみようと思います。 では、今回の要点です。 <式1>, <式2> の値は <式2> になる。 コンマ演算子は優先順位が異常に低い。 コンマ演算子を使えば複文を単文にできる。 では、いってみましょう。 前回のプログラムの for 文をもう一度見てみましょう。 for(i = 0; i < 8; i++) { if(fscanf(pf1, "%d", &num1) == EOF || fscanf(pf2, "%d", &num2) == EOF) { fputc('\n', pf3); goto LAST; } fprintf(pf3, "%d ", num1 + num2); nNumbers++; } 最後に nNumbers++; というのがありますね。しかしこれ、感覚的には for 文の i++ の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く