独自のキャスト演算子実装方法

operatorキーワードを使えば実装できる。

class CMyClass
{
public:
operator int() const;
}

CMyClass::operator int() const
{
// キャストした後の型で、適切な値を返すようにします。
return 0;
}

みたいな感じで。

使い方は、

CMyClass classValue;
int intValue = (int)classValue;

のように、キャスト演算子を実装したクラスのインスタンスを、実装したキャスト演算子でキャストできるようになる。

デフォルトだと暗黙キャストが有効なので、明示的にキャストすることを必須にしたいなら、

explicit operator const char*() const;

のように、explicitキーワードをつければよい(C++11以降)。
ただし、boolのように注意しなければいけないパターンもある。詳細は参考リンクを見ること。

参考:https://ez-net.jp/article/7D/XrRDo8VO/_4QfAkRTO-Or/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です