Во многих учебниках встречался с утверждениями типа "константный обьект класса изменить невозможно", но в Visual С++ следующий код срабатывает без проблем:
class A
{
public:
A() : x(0) {}
virtual ~A() {}
int x;
void ff() { x += 5;}
};
void f(const A& a)
{
A * pA = const_cast<A *>(&a);
A& ra = *pA; // this transformation is no needed,
// just for the code appearance
ra.x = 5;
ra.ff();
}
int main()
{
A a;
cout << a.x << endl;
f(a);
cout << a.x << endl;
const A cA;
cout << cA.x << endl;
f(cA);
cout << cA.x << endl;
}
Где ошибка: в учебниках? Или Visual C++ 6.0 не соответствует стандарту? Кто — нибудь это знает?