Я не думаю, что это ваш настоящий код, во-первых, из-за синтаксических ошибок, которые он имеет, а во-вторых, из-за того, что он на самом деле правильный (в основном).Более конкретно, с этим фрагментом кода quxBar->setX(100);
приведет к ошибке компиляции.
Однако quxBar->getX()
также будет ошибкой компиляции, вам нужно указать компилятору, что он может быть вызван для const-объектов,Вы делаете это, добавляя const
в конце сигнатуры функции:
int getX() const { return x; }
Возможно, в вашем фактическом коде у вас было Bar* const quxBar
вместо Bar const* quxBar
;они означают две разные вещи: первая - это const-указатель на Bar, а вторая - указатель на const Bar .Например.в предыдущем случае только сам указатель не может быть изменен, но объект, на который он указывает, может.