Рассмотрим следующий фрагмент кода:
class A
{
public:
void nonConstFun()
{
}
};
class B
{
private:
A a_;
A * pA_;
public:
void fun() const
{
pA_->nonConstFun();
//a_.nonConstFun(); // Gives const related error
}
};
int main()
{
B b;
b.fun();
}
Здесь я ожидаю, что компилятор завершит компиляцию из-за отсутствия константы для вызова A::nonConstFun()
внутри B::fun()
независимо от типа объекта A.
Однако компилятор жалуется на объект, но не на указатель. Зачем? Я использую VS2017 в Windows 10.