変換関数

C++の仕様で,変換関数というものを見つけた.
どういう機能かというと,Rubyでいうところの .to_i とか .to_s みたいなやつ(かなり違うけど).
Javaでいうところの toString() みたいなやつ(かなり違うけど).

要は,ある型へ自動的にキャストされるようにしてやることができる(らしい).
たとえば char* への変換関数を作っておくと,char* を引数に持つ関数へそのオブジェクトを渡したときに自動的に変換関数を呼び出して char* へキャストしてくれる.

変換関数の定義方法は,

operator type(){
    …中略…
    return hoge;
}

ただし, type は変換したい型(char* とか int とか)で,hoge は type 型の変数.

これでたとえば

class vector{
  private:
    int x;
    int y;
  public:
    …中略…
    operator int(){
        return x*x+y*y;
    }
    operator char*(){
        std::ostringstream oss;
        oss << "(" << x << "," << y << ")" << std::endl;
        return oss.str().c_str();
    }
};

のようにすることができる.