В функции-члене const
каждый член класса равен const
.Тем не менее, вы не можете вернуть неконстантный указатель из константного вектора, поэтому ошибка в этом коде:
char* getB() const
{
// why compile error?
return &buf[0];
}
Поскольку внутри функции, buf
становится const vector<char>
, и, следовательно, &bug[0]
становитсяcont char*
.Поэтому вам нужно сделать тип возвращаемого значения const char*
, чтобы исправить ошибку компиляции.