Учтите это:
struct foo
{
void bar();
};
const foo f;
f.bar();
Здесь при вызове bar()
указатель this
равен &f
. Но bar()
не является константной функцией, поэтому тип this
равен foo*
, что несовместимо с const foo*
. (Другими словами, bar()
говорит, что это может изменить foo
, но f
говорит, что это не изменяемый foo
.)
Либо bar()
необходимо пометить как const
(если возможно), либо f
не должно быть const
.
В вашем случае я собираюсь предположить, что вы используете Qt и поэтому не можете изменить QByteArray
(и не следует, поскольку append
обязательно является неконстантной функцией), и вместо этого предлагаю вам избавиться от const
на объекте, который мешает вам использовать функцию.