C++C++2010-04-271を左シフトした時の10進数と16進数の対応表C++だいたいの値をいつも忘れるのでメモ代わりに対応表を作ってみた。<<...1を左シフトした時の10進数と16進数の対応表2010-04-23Singletonクラスにauto_ptrを使うのは案外難しいC++またまたSingletonクラスの話です。自動でデストラクタを呼ばせる目的なら、自前でクラスを作るよりもauto_ptrを使った方が意図が伝わりやすいというコメントを頂き、確かにそうだなと思ったのでauto_ptrを使ってもう一度Singletonクラスを...Singletonクラスにauto_ptrを使うのは案外難しい2010-04-23Singletonの話あれこれC++さてここ最近ずっとSingletonについてあれこれ学んでる最中なのですが、なにやらまたしてもC++の深遠を覗いてしまった感があります。Togetterこちらの記事で僕の疑問...Singletonの話あれこれ2010-04-23Singletonをテンプレート化するC++Singletonクラスの続きです。今回はSingletonクラスをテンプレート化して簡単に定義できるようにしてみたいと思います。m_instance(0){</class></iostream>...Singletonをテンプレート化する2010-04-22Singletonクラスの内部で持つポインタの話C++先日の記事でコメントを頂いたのでちょっとSingletonクラスの内部で持つポインタについて自分なりに色々調べてみました。下記のようなシンプルなSingletonクラスを考えます。m_instan</iostream>...Singletonクラスの内部で持つポインタの話2010-04-16SingletonじゃないクラスをSingleton化する方法を考えるC++もともとSingletonではない元クラスをSingletonとして扱う方法がないかを考えてみる。元クラスは引数無しのコンストラクタを呼べなくてはならない。当然のことながら元クラス単体を定義したりnewしたりできるということはここでは問題とし...SingletonじゃないクラスをSingleton化する方法を考える2010-04-06const有り無し両方のメンバ関数を用意する理由C++参考書等をを見ると、例えば戻り値にメンバ変数への参照を返すようなメンバ関数を用意する場合、const有りとconst無しの両方を用意しています。operator[</iostream>...const有り無し両方のメンバ関数を用意する理由2010-04-06privateなメンバ変数にアクセスするC++たとえメンバ変数をprivateにしていたとしてもポインタを経由すればアクセスできてしまう。()</iostream>...privateなメンバ変数にアクセスする2010-04-06ostringstreamクラスC++文字の加工にはostringstreamが便利。foo10.txtちなみにss.str()の</sstream></iostream>...ostringstreamクラス2010-03-31初歩的なミスC++やっちまった。うまくいく</iostream>...初歩的なミス2010-03-30一次元配列を二次元配列っぽく扱うクラスの実装C++前回の記事では以下のようにして一次元配列を扱っていました。一次元配列としてnewで確保した配列を二次元配列っぽく扱う。</iostream>...一次元配列を二次元配列っぽく扱うクラスの実装2010-03-30一次元配列を二次元配列っぽく扱うC++一次元配列としてnewで確保した配列を二次元配列っぽく扱う。戻り値のみでは通常オーバーロードはできません。自分自身をテンプレート指定したものを継承するというぱっと聞くと凄く良く分からないお話。boost::functionの話が出てきました。言ってしまえば関数ポインタや関数オブジェクトが渡せるオブジェクトなんですが、それを実現するための実装が凄く難しい。スマートポインタのメモリ解放処理を関数ポインタ(もしくは関数オブジェクト)を渡すことによって専用の解放処理を実行するという話。boost::anyの話が出てきました。なんでも格納できるクラスです。本を参考にしながら出来る範囲内で実装してみます。仮想関数テーブルの話が出てきました。話だけは知っていたのですが、実際のこんな感じという実装を見てイメージが湧きました。何でも保存できるvoid*型を利用したテクニックの話。deleteするときに元の型のデストラクタが呼ばれないのでこのままじゃダメ。Erasureではdeleteする際に元クラスのデストラクタが呼ばれないという問題がありました。非テンプレート基本クラスとテンプレート派生クラスを利用すればこの問題が解決します。Boostにあるenable_ifというメタ関数の話。これはうまい仕組みだなぁ。このT[N]で特殊化してる部分が良く分からなかったので自分なりに色々調査してみた。ここの話はいろいろと面白いですね。beginやendを汎用化して呼び分ける。コードも簡素になるし素晴らしいです。http://d.hatena.ne.jp/pknight/20100323/1269358966続き。お次は継承を利用したポリシーです。前回の記事ではstaticメンバ関数を使用したポリシークラスの実装になっていました。今回はインスタンスメンバを使用した場合のポリシーについてです。しても新しい単語が登場。要約すると同じ関数を持つ別々のクラスを指定できるようにするテンプレートといった感じでしょうか。SFINAEという言葉が出てきました。テンプレートのインスタンス化に失敗した場合に、即エラーにするわけではなく、一旦オーバーロードの候補から外して別のテンプレートをインスタンス化する、という感じですかね。(void*)Pないとで出てきたiterator_traitsを実装してみる。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。