ただし、型キャストには何の問題もありません。特に、型キャストを使用static_cast
する場合はなおさらです。それはあなたが使うべきものです。これにより、コンパイラーは型キャストを検証し、安全であることを確認できます。
演算子の動作を変更するには、値のデフォルトの演算子<<
をオーバーライドする必要があります。例:<<
char
std::ostream& operator <<(std::ostream &os, char c)
{
os << static_cast<int>(c);
return os;
}
char c = ...;
std::cout << c;
入力としてを受け取るカスタムタイプを作成してから、そのタイプの演算子をchar
実装できます。例:<<
struct CharToInt
{
int val;
CharToInt(char c) : val(static_cast<int>(c)) {}
};
std::ostream& operator <<(std::ostream &os, const CharToInt &c)
{
os << c.val;
return os;
}
char c = ...;
std::cout << CharToInt(c);
<<
同様のことを行う関数を作成できます。その場合、演算子をオーバーライドする必要はありません。例:
int CharToInt(char c)
{
return c;
}
char c = ...;
std::cout << CharToInt(c);