茂加部珈琲店

主にtech関連のメモ置き場です

c++

type traits(型特性)クラスの利用

c++

またまたc++勉強ネタ。 traitsクラス traitsクラスは、templateを利用したテクニックの一つです。 標準ライブラリや、boostなどで多用される手法の一つでもあります。 今回は、traitsクラスの基本的な利用法を勉強したいと思います。 traitsクラス type trai…

君はプライベートメンバにアクセスできるフレンズなんだね!

c++

いまだc++を勉強中です。今回はちょっとマイナーな機能、friendについて friend friendを使えば、クラスのプライベートメンバにアクセスできる外部関数を指定できます。 privateを指定すると、基本的に外部からのアクセスは禁止されるのですが、friendを使え…

型情報の保存

c++

あけましておめでとうございます. 突然ですが、基底クラスから元の型を復元したいと思うことはないでしょうか.C++ではそのような型情報の保存を簡単に行えるみたいです. 具体的には、仮想関数を利用して型情報を返す関数を定義します. #include <iostream> #include <typeinfo> s</typeinfo></iostream>…

virtualなデストラクタ

c++

C++では、ポリモーフィズムを利用するために作成した基底クラスのデストラクタにはvirtualを付けることがあるようです. virtualがないと、基底クラスのポインタで管理している場合は、基底クラスのデストラクタのみが呼ばれてしまうためです. 初心者は「そん…

無名共用体、構造体とスマートポインタ

c++

最近C++を勉強中の私です. 今日は無名構造体とスマートポインタを使ったコードが上手くいかなかったので、反省として残しておきます. 例えば、以下のようなコードを書いたとします. template <typename T> struct test{ union{ struct{std::unique_ptr<T> x,y,z;}; //etc. }</t></typename>…

単純な三角メッシュ

はてなのマークダウンの練習 CGの入門書に書いてあるようなやつです メッシュ構造 メッシュ構造は3DCGで利用される3Dモデルの表現法です. ここでは、シンプルなobjファイルで使われるような、頂点+三角形で構成されるメッシュ構造を書いてみました template <typename T></typename>…