29章 変換演算子
http://www.geocities.jp/ky_webid/cpp/language/029.html
もう何かこの辺の変換のところはややこしいですね。まったく。
演算子のオーバーロードだけでは飽き足らず、型への変換までもクラスに定義できるようです。
兎に角実装してみます。
#include <iostream> using namespace std; class CSample { public: CSample (float f) : m_f(f) {} operator int() const { return static_cast<int>(m_f); } private: float m_f; }; int main () { CSample obj(3.14f); // operator int()が呼ばれる int i = obj; cout << i << endl; return 0; }
operator int()という特殊な書き方をすると、int型へキャストされるときの振る舞いを指定できます。
なのでもちろん
int i = static_cast<int>(obj);
と書いても呼ばれます。