与えられた:
typedef struct { char val[SOME_FIXED_SIZE]; } AString;
typedef struct { unsigned char val[SOME_FIXED_SIZE]; } BString;
<<
とで使用できるostream 演算子を追加したいと思いAString
ますBString
。
std::ostream & operator<<(std::ostream &out, const AString &str)
{
out.write(str.val, SOME_FIXED_SIZE);
return out;
}
に対して同じことをするBString
と、コンパイラは について不平を言いinvalid conversion from 'const unsigned char*' to 'const char*'
ます。には引数ostream.write
がありません。const unsigned char*
それ<<
自体が を受け入れるように見えるconst unsigned char
ので、このようなことを試します
std::ostream & operator<<(std::ostream &out, const BString &str)
{
for (int i=0; i<SOME_FIXED_SIZE; i++)
{
out<<str.val[i];
}
return out;
}
これが正しい/良い習慣なのか、それとももっと良い方法があるのか 誰か教えてもらえますか? コメントを歓迎します!