Дано:
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;
}
Может кто-нибудь сказать мне, если это правильно / хорошая практика или есть какие-то лучшие способы?Приветствую любые комментарии!