2010-03-01から1ヶ月間の記事一覧

template限定子

C++テンプレートテクニック 2-6 template<class T> int foo(T x,int n) { return x.get<3>(n); } 上記のようなテンプレートの場合、「x.get(n)」は変数xのgetメンバ関数の呼び出しを期待しているわけなのだが、変数xのgetメンバ変数と3を比較するという処理、つまり「</class>…

typenameキーワード

C++テンプレートテクニック 2-6 テンプレートの曖昧さ回避のために使用するらしい。 #include <iostream> using std::cout; using std::endl; struct ClassA { typedef int result; }; struct ClassB { static const int result = 5; }; int p; template<class T> void func (T)</class></iostream>…

コンストラクタテンプレート

C++テンプレートテクニック 2-5 コンストラクタテンプレートという名前がついてますが、要はクラステンプレートとメンバ関数テンプレートの合わせ技ですね。 関連 http://d.hatena.ne.jp/pknight/20090805/1249471903

テンプレート引数にポインタを渡す

C++テンプレートテクニック 2-4 テンプレート引数にはコンパイル時に値が確定しているグローバル変数や関数のポインタも渡すことができます。 #include <iostream> using std::cout; using std::endl; template<class T,void (T::*M)()> void func (T obj) { (obj.*M)(); } class CClass { publ</class></iostream>…

テンプレートと参照渡しを利用して配列の要素数を取得する

C++テンプレートテクニック 2-4 #include <iostream> using std::cout; using std::endl; template<class T,int N> int size(T (&)[N]) { return N; } int main () { int a[] = {3,4,5,6}; // 配列aの要素数を表示 cout << size(a) << endl; return 0; } $ main 4配列の参照渡しをした</class></iostream>…

配列のポインタ渡しと参照渡しの違い

C++

ポインタ渡しとは以下のような処理です。 #include <iostream> using std::cout; using std::endl; // ポインタ渡し void func(int *a) { cout << a[0] << endl; } int main () { int a[] = {3,4,5,6}; func(a); } また、以下のようにも書くことができます。 void func</iostream>…

明示的なインスタンス化の注意点

C++テンプレートテクニック 2-2 さて、以下のコードはコンパイルできるでしょうか? #include <iostream> using std::cout; using std::endl; template<class T> class CClass { public: T m_val; CClass (T val) { m_val = val; } void Set (T val) { m_val = val; } T Get () </class></iostream>…

マクロによるテンプレートもどき

C++テンプレートテクニック 1-2 お次はマクロを利用してテンプレートっぽいことをやるという話。ということで前回の記事で作ったreverseをマクロテンプレートもどきで再実装してみた。 #include <iostream> #define ARRAY_NUM(a) (sizeof(a)/sizeof(a[0])) using std::</iostream>…

あらゆる型をObjectクラスから派生する

C++テンプレートテクニック 1-1 テンプレートが無かった時代に考案されたObjectクラスから派生する方法。これはこれでなかなか面白い。うまく考えれば用途はありそうな気はする。

C++テンプレートテクニック購入

C++テンプレートテクニック作者: επιστημη,高橋晶出版社/メーカー: ソフトバンククリエイティブ発売日: 2009/04/25メディア: 単行本購入: 16人 クリック: 224回この商品を含むブログ (54件) を見る 欲しかった本。ついに購入しました。ゆっくり読み進めてい…

ループを使わずに配列の順序を逆にする

C++

プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集 - ZDNet Japan ループを使わずに配列の順序を逆にする。 という件があったのでチャレンジしてみた。 #include <iostream> #define ARRAY_NUM(a) (sizeof(a)/sizeof(a[0])) using std::cout; using</iostream>…